/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
"use strict";

var $protobuf = require("protobufjs/minimal.js");

// Common aliases
var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

$root.JhaoProto = (function() {

    /**
     * Namespace JhaoProto.
     * @exports JhaoProto
     * @namespace
     */
    var JhaoProto = {};

    JhaoProto.req_club_list = (function() {

        /**
         * Properties of a req_club_list.
         * @memberof JhaoProto
         * @interface Ireq_club_list
         */

        /**
         * Constructs a new req_club_list.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_list.
         * @implements Ireq_club_list
         * @constructor
         * @param {JhaoProto.Ireq_club_list=} [properties] Properties to set
         */
        function req_club_list(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new req_club_list instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {JhaoProto.Ireq_club_list=} [properties] Properties to set
         * @returns {JhaoProto.req_club_list} req_club_list instance
         */
        req_club_list.create = function create(properties) {
            return new req_club_list(properties);
        };

        /**
         * Encodes the specified req_club_list message. Does not implicitly {@link JhaoProto.req_club_list.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {JhaoProto.Ireq_club_list} message req_club_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_list.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified req_club_list message, length delimited. Does not implicitly {@link JhaoProto.req_club_list.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {JhaoProto.Ireq_club_list} message req_club_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_list.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_list message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_list} req_club_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_list.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_list();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_list message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_list} req_club_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_list.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_list message.
         * @function verify
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_list.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a req_club_list message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_list} req_club_list
         */
        req_club_list.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_list)
                return object;
            return new $root.JhaoProto.req_club_list();
        };

        /**
         * Creates a plain object from a req_club_list message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {JhaoProto.req_club_list} message req_club_list
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_list.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this req_club_list to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_list
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_list.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_list
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_list
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_list.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_list";
        };

        return req_club_list;
    })();

    JhaoProto.resp_club_list = (function() {

        /**
         * Properties of a resp_club_list.
         * @memberof JhaoProto
         * @interface Iresp_club_list
         * @property {Array.<JhaoProto.IClubInfo>|null} [clubs] resp_club_list clubs
         */

        /**
         * Constructs a new resp_club_list.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_list.
         * @implements Iresp_club_list
         * @constructor
         * @param {JhaoProto.Iresp_club_list=} [properties] Properties to set
         */
        function resp_club_list(properties) {
            this.clubs = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_club_list clubs.
         * @member {Array.<JhaoProto.IClubInfo>} clubs
         * @memberof JhaoProto.resp_club_list
         * @instance
         */
        resp_club_list.prototype.clubs = $util.emptyArray;

        /**
         * Creates a new resp_club_list instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {JhaoProto.Iresp_club_list=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_list} resp_club_list instance
         */
        resp_club_list.create = function create(properties) {
            return new resp_club_list(properties);
        };

        /**
         * Encodes the specified resp_club_list message. Does not implicitly {@link JhaoProto.resp_club_list.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {JhaoProto.Iresp_club_list} message resp_club_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_list.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubs != null && message.clubs.length)
                for (var i = 0; i < message.clubs.length; ++i)
                    $root.JhaoProto.ClubInfo.encode(message.clubs[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified resp_club_list message, length delimited. Does not implicitly {@link JhaoProto.resp_club_list.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {JhaoProto.Iresp_club_list} message resp_club_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_list.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_list message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_list} resp_club_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_list.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_list();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.clubs && message.clubs.length))
                            message.clubs = [];
                        message.clubs.push($root.JhaoProto.ClubInfo.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_list message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_list} resp_club_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_list.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_list message.
         * @function verify
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_list.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubs != null && message.hasOwnProperty("clubs")) {
                if (!Array.isArray(message.clubs))
                    return "clubs: array expected";
                for (var i = 0; i < message.clubs.length; ++i) {
                    var error = $root.JhaoProto.ClubInfo.verify(message.clubs[i]);
                    if (error)
                        return "clubs." + error;
                }
            }
            return null;
        };

        /**
         * Creates a resp_club_list message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_list} resp_club_list
         */
        resp_club_list.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_list)
                return object;
            var message = new $root.JhaoProto.resp_club_list();
            if (object.clubs) {
                if (!Array.isArray(object.clubs))
                    throw TypeError(".JhaoProto.resp_club_list.clubs: array expected");
                message.clubs = [];
                for (var i = 0; i < object.clubs.length; ++i) {
                    if (typeof object.clubs[i] !== "object")
                        throw TypeError(".JhaoProto.resp_club_list.clubs: object expected");
                    message.clubs[i] = $root.JhaoProto.ClubInfo.fromObject(object.clubs[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a resp_club_list message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {JhaoProto.resp_club_list} message resp_club_list
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_list.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.clubs = [];
            if (message.clubs && message.clubs.length) {
                object.clubs = [];
                for (var j = 0; j < message.clubs.length; ++j)
                    object.clubs[j] = $root.JhaoProto.ClubInfo.toObject(message.clubs[j], options);
            }
            return object;
        };

        /**
         * Converts this resp_club_list to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_list
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_list.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_list
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_list
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_list.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_list";
        };

        return resp_club_list;
    })();

    JhaoProto.req_club_create = (function() {

        /**
         * Properties of a req_club_create.
         * @memberof JhaoProto
         * @interface Ireq_club_create
         * @property {string|null} [name] req_club_create name
         * @property {string|null} [notice] req_club_create notice
         */

        /**
         * Constructs a new req_club_create.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_create.
         * @implements Ireq_club_create
         * @constructor
         * @param {JhaoProto.Ireq_club_create=} [properties] Properties to set
         */
        function req_club_create(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_create name.
         * @member {string} name
         * @memberof JhaoProto.req_club_create
         * @instance
         */
        req_club_create.prototype.name = "";

        /**
         * req_club_create notice.
         * @member {string} notice
         * @memberof JhaoProto.req_club_create
         * @instance
         */
        req_club_create.prototype.notice = "";

        /**
         * Creates a new req_club_create instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {JhaoProto.Ireq_club_create=} [properties] Properties to set
         * @returns {JhaoProto.req_club_create} req_club_create instance
         */
        req_club_create.create = function create(properties) {
            return new req_club_create(properties);
        };

        /**
         * Encodes the specified req_club_create message. Does not implicitly {@link JhaoProto.req_club_create.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {JhaoProto.Ireq_club_create} message req_club_create message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_create.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
            if (message.notice != null && Object.hasOwnProperty.call(message, "notice"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.notice);
            return writer;
        };

        /**
         * Encodes the specified req_club_create message, length delimited. Does not implicitly {@link JhaoProto.req_club_create.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {JhaoProto.Ireq_club_create} message req_club_create message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_create.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_create message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_create} req_club_create
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_create.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_create();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.name = reader.string();
                        break;
                    }
                case 2: {
                        message.notice = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_create message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_create} req_club_create
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_create.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_create message.
         * @function verify
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_create.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.name != null && message.hasOwnProperty("name"))
                if (!$util.isString(message.name))
                    return "name: string expected";
            if (message.notice != null && message.hasOwnProperty("notice"))
                if (!$util.isString(message.notice))
                    return "notice: string expected";
            return null;
        };

        /**
         * Creates a req_club_create message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_create} req_club_create
         */
        req_club_create.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_create)
                return object;
            var message = new $root.JhaoProto.req_club_create();
            if (object.name != null)
                message.name = String(object.name);
            if (object.notice != null)
                message.notice = String(object.notice);
            return message;
        };

        /**
         * Creates a plain object from a req_club_create message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {JhaoProto.req_club_create} message req_club_create
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_create.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.name = "";
                object.notice = "";
            }
            if (message.name != null && message.hasOwnProperty("name"))
                object.name = message.name;
            if (message.notice != null && message.hasOwnProperty("notice"))
                object.notice = message.notice;
            return object;
        };

        /**
         * Converts this req_club_create to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_create
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_create.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_create
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_create
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_create.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_create";
        };

        return req_club_create;
    })();

    JhaoProto.resp_club_create = (function() {

        /**
         * Properties of a resp_club_create.
         * @memberof JhaoProto
         * @interface Iresp_club_create
         * @property {Array.<JhaoProto.IClubInfo>|null} [clubs] resp_club_create clubs
         */

        /**
         * Constructs a new resp_club_create.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_create.
         * @implements Iresp_club_create
         * @constructor
         * @param {JhaoProto.Iresp_club_create=} [properties] Properties to set
         */
        function resp_club_create(properties) {
            this.clubs = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_club_create clubs.
         * @member {Array.<JhaoProto.IClubInfo>} clubs
         * @memberof JhaoProto.resp_club_create
         * @instance
         */
        resp_club_create.prototype.clubs = $util.emptyArray;

        /**
         * Creates a new resp_club_create instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {JhaoProto.Iresp_club_create=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_create} resp_club_create instance
         */
        resp_club_create.create = function create(properties) {
            return new resp_club_create(properties);
        };

        /**
         * Encodes the specified resp_club_create message. Does not implicitly {@link JhaoProto.resp_club_create.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {JhaoProto.Iresp_club_create} message resp_club_create message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_create.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubs != null && message.clubs.length)
                for (var i = 0; i < message.clubs.length; ++i)
                    $root.JhaoProto.ClubInfo.encode(message.clubs[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified resp_club_create message, length delimited. Does not implicitly {@link JhaoProto.resp_club_create.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {JhaoProto.Iresp_club_create} message resp_club_create message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_create.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_create message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_create} resp_club_create
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_create.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_create();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.clubs && message.clubs.length))
                            message.clubs = [];
                        message.clubs.push($root.JhaoProto.ClubInfo.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_create message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_create} resp_club_create
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_create.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_create message.
         * @function verify
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_create.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubs != null && message.hasOwnProperty("clubs")) {
                if (!Array.isArray(message.clubs))
                    return "clubs: array expected";
                for (var i = 0; i < message.clubs.length; ++i) {
                    var error = $root.JhaoProto.ClubInfo.verify(message.clubs[i]);
                    if (error)
                        return "clubs." + error;
                }
            }
            return null;
        };

        /**
         * Creates a resp_club_create message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_create} resp_club_create
         */
        resp_club_create.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_create)
                return object;
            var message = new $root.JhaoProto.resp_club_create();
            if (object.clubs) {
                if (!Array.isArray(object.clubs))
                    throw TypeError(".JhaoProto.resp_club_create.clubs: array expected");
                message.clubs = [];
                for (var i = 0; i < object.clubs.length; ++i) {
                    if (typeof object.clubs[i] !== "object")
                        throw TypeError(".JhaoProto.resp_club_create.clubs: object expected");
                    message.clubs[i] = $root.JhaoProto.ClubInfo.fromObject(object.clubs[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a resp_club_create message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {JhaoProto.resp_club_create} message resp_club_create
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_create.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.clubs = [];
            if (message.clubs && message.clubs.length) {
                object.clubs = [];
                for (var j = 0; j < message.clubs.length; ++j)
                    object.clubs[j] = $root.JhaoProto.ClubInfo.toObject(message.clubs[j], options);
            }
            return object;
        };

        /**
         * Converts this resp_club_create to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_create
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_create.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_create
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_create
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_create.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_create";
        };

        return resp_club_create;
    })();

    JhaoProto.req_club_join = (function() {

        /**
         * Properties of a req_club_join.
         * @memberof JhaoProto
         * @interface Ireq_club_join
         * @property {number|null} [clubid] req_club_join clubid
         */

        /**
         * Constructs a new req_club_join.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_join.
         * @implements Ireq_club_join
         * @constructor
         * @param {JhaoProto.Ireq_club_join=} [properties] Properties to set
         */
        function req_club_join(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_join clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_join
         * @instance
         */
        req_club_join.prototype.clubid = 0;

        /**
         * Creates a new req_club_join instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {JhaoProto.Ireq_club_join=} [properties] Properties to set
         * @returns {JhaoProto.req_club_join} req_club_join instance
         */
        req_club_join.create = function create(properties) {
            return new req_club_join(properties);
        };

        /**
         * Encodes the specified req_club_join message. Does not implicitly {@link JhaoProto.req_club_join.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {JhaoProto.Ireq_club_join} message req_club_join message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_join.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            return writer;
        };

        /**
         * Encodes the specified req_club_join message, length delimited. Does not implicitly {@link JhaoProto.req_club_join.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {JhaoProto.Ireq_club_join} message req_club_join message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_join.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_join message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_join} req_club_join
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_join.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_join();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_join message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_join} req_club_join
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_join.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_join message.
         * @function verify
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_join.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            return null;
        };

        /**
         * Creates a req_club_join message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_join} req_club_join
         */
        req_club_join.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_join)
                return object;
            var message = new $root.JhaoProto.req_club_join();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_club_join message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {JhaoProto.req_club_join} message req_club_join
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_join.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.clubid = 0;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            return object;
        };

        /**
         * Converts this req_club_join to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_join
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_join.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_join
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_join
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_join.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_join";
        };

        return req_club_join;
    })();

    JhaoProto.resp_club_join = (function() {

        /**
         * Properties of a resp_club_join.
         * @memberof JhaoProto
         * @interface Iresp_club_join
         */

        /**
         * Constructs a new resp_club_join.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_join.
         * @implements Iresp_club_join
         * @constructor
         * @param {JhaoProto.Iresp_club_join=} [properties] Properties to set
         */
        function resp_club_join(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_join instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {JhaoProto.Iresp_club_join=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_join} resp_club_join instance
         */
        resp_club_join.create = function create(properties) {
            return new resp_club_join(properties);
        };

        /**
         * Encodes the specified resp_club_join message. Does not implicitly {@link JhaoProto.resp_club_join.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {JhaoProto.Iresp_club_join} message resp_club_join message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_join.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_join message, length delimited. Does not implicitly {@link JhaoProto.resp_club_join.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {JhaoProto.Iresp_club_join} message resp_club_join message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_join.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_join message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_join} resp_club_join
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_join.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_join();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_join message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_join} resp_club_join
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_join.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_join message.
         * @function verify
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_join.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_join message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_join} resp_club_join
         */
        resp_club_join.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_join)
                return object;
            return new $root.JhaoProto.resp_club_join();
        };

        /**
         * Creates a plain object from a resp_club_join message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {JhaoProto.resp_club_join} message resp_club_join
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_join.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_join to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_join
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_join.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_join
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_join
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_join.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_join";
        };

        return resp_club_join;
    })();

    JhaoProto.req_club_apply_list = (function() {

        /**
         * Properties of a req_club_apply_list.
         * @memberof JhaoProto
         * @interface Ireq_club_apply_list
         * @property {number|null} [clubid] req_club_apply_list clubid
         */

        /**
         * Constructs a new req_club_apply_list.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_apply_list.
         * @implements Ireq_club_apply_list
         * @constructor
         * @param {JhaoProto.Ireq_club_apply_list=} [properties] Properties to set
         */
        function req_club_apply_list(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_apply_list clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_apply_list
         * @instance
         */
        req_club_apply_list.prototype.clubid = 0;

        /**
         * Creates a new req_club_apply_list instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {JhaoProto.Ireq_club_apply_list=} [properties] Properties to set
         * @returns {JhaoProto.req_club_apply_list} req_club_apply_list instance
         */
        req_club_apply_list.create = function create(properties) {
            return new req_club_apply_list(properties);
        };

        /**
         * Encodes the specified req_club_apply_list message. Does not implicitly {@link JhaoProto.req_club_apply_list.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {JhaoProto.Ireq_club_apply_list} message req_club_apply_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_apply_list.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            return writer;
        };

        /**
         * Encodes the specified req_club_apply_list message, length delimited. Does not implicitly {@link JhaoProto.req_club_apply_list.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {JhaoProto.Ireq_club_apply_list} message req_club_apply_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_apply_list.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_apply_list message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_apply_list} req_club_apply_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_apply_list.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_apply_list();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_apply_list message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_apply_list} req_club_apply_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_apply_list.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_apply_list message.
         * @function verify
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_apply_list.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            return null;
        };

        /**
         * Creates a req_club_apply_list message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_apply_list} req_club_apply_list
         */
        req_club_apply_list.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_apply_list)
                return object;
            var message = new $root.JhaoProto.req_club_apply_list();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_club_apply_list message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {JhaoProto.req_club_apply_list} message req_club_apply_list
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_apply_list.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.clubid = 0;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            return object;
        };

        /**
         * Converts this req_club_apply_list to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_apply_list
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_apply_list.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_apply_list
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_apply_list
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_apply_list.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_apply_list";
        };

        return req_club_apply_list;
    })();

    JhaoProto.resp_club_apply_list = (function() {

        /**
         * Properties of a resp_club_apply_list.
         * @memberof JhaoProto
         * @interface Iresp_club_apply_list
         * @property {Array.<JhaoProto.IClub_User>|null} [users] resp_club_apply_list users
         */

        /**
         * Constructs a new resp_club_apply_list.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_apply_list.
         * @implements Iresp_club_apply_list
         * @constructor
         * @param {JhaoProto.Iresp_club_apply_list=} [properties] Properties to set
         */
        function resp_club_apply_list(properties) {
            this.users = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_club_apply_list users.
         * @member {Array.<JhaoProto.IClub_User>} users
         * @memberof JhaoProto.resp_club_apply_list
         * @instance
         */
        resp_club_apply_list.prototype.users = $util.emptyArray;

        /**
         * Creates a new resp_club_apply_list instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {JhaoProto.Iresp_club_apply_list=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_apply_list} resp_club_apply_list instance
         */
        resp_club_apply_list.create = function create(properties) {
            return new resp_club_apply_list(properties);
        };

        /**
         * Encodes the specified resp_club_apply_list message. Does not implicitly {@link JhaoProto.resp_club_apply_list.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {JhaoProto.Iresp_club_apply_list} message resp_club_apply_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_apply_list.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.users != null && message.users.length)
                for (var i = 0; i < message.users.length; ++i)
                    $root.JhaoProto.Club_User.encode(message.users[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified resp_club_apply_list message, length delimited. Does not implicitly {@link JhaoProto.resp_club_apply_list.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {JhaoProto.Iresp_club_apply_list} message resp_club_apply_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_apply_list.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_apply_list message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_apply_list} resp_club_apply_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_apply_list.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_apply_list();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.users && message.users.length))
                            message.users = [];
                        message.users.push($root.JhaoProto.Club_User.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_apply_list message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_apply_list} resp_club_apply_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_apply_list.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_apply_list message.
         * @function verify
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_apply_list.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.users != null && message.hasOwnProperty("users")) {
                if (!Array.isArray(message.users))
                    return "users: array expected";
                for (var i = 0; i < message.users.length; ++i) {
                    var error = $root.JhaoProto.Club_User.verify(message.users[i]);
                    if (error)
                        return "users." + error;
                }
            }
            return null;
        };

        /**
         * Creates a resp_club_apply_list message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_apply_list} resp_club_apply_list
         */
        resp_club_apply_list.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_apply_list)
                return object;
            var message = new $root.JhaoProto.resp_club_apply_list();
            if (object.users) {
                if (!Array.isArray(object.users))
                    throw TypeError(".JhaoProto.resp_club_apply_list.users: array expected");
                message.users = [];
                for (var i = 0; i < object.users.length; ++i) {
                    if (typeof object.users[i] !== "object")
                        throw TypeError(".JhaoProto.resp_club_apply_list.users: object expected");
                    message.users[i] = $root.JhaoProto.Club_User.fromObject(object.users[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a resp_club_apply_list message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {JhaoProto.resp_club_apply_list} message resp_club_apply_list
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_apply_list.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.users = [];
            if (message.users && message.users.length) {
                object.users = [];
                for (var j = 0; j < message.users.length; ++j)
                    object.users[j] = $root.JhaoProto.Club_User.toObject(message.users[j], options);
            }
            return object;
        };

        /**
         * Converts this resp_club_apply_list to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_apply_list
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_apply_list.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_apply_list
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_apply_list
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_apply_list.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_apply_list";
        };

        return resp_club_apply_list;
    })();

    JhaoProto.req_club_apply_handle = (function() {

        /**
         * Properties of a req_club_apply_handle.
         * @memberof JhaoProto
         * @interface Ireq_club_apply_handle
         * @property {number|null} [id] req_club_apply_handle id
         * @property {boolean|null} [isAgree] req_club_apply_handle isAgree
         * @property {number|null} [clubid] req_club_apply_handle clubid
         * @property {number|Long|null} [userid] req_club_apply_handle userid
         */

        /**
         * Constructs a new req_club_apply_handle.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_apply_handle.
         * @implements Ireq_club_apply_handle
         * @constructor
         * @param {JhaoProto.Ireq_club_apply_handle=} [properties] Properties to set
         */
        function req_club_apply_handle(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_apply_handle id.
         * @member {number} id
         * @memberof JhaoProto.req_club_apply_handle
         * @instance
         */
        req_club_apply_handle.prototype.id = 0;

        /**
         * req_club_apply_handle isAgree.
         * @member {boolean} isAgree
         * @memberof JhaoProto.req_club_apply_handle
         * @instance
         */
        req_club_apply_handle.prototype.isAgree = false;

        /**
         * req_club_apply_handle clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_apply_handle
         * @instance
         */
        req_club_apply_handle.prototype.clubid = 0;

        /**
         * req_club_apply_handle userid.
         * @member {number|Long} userid
         * @memberof JhaoProto.req_club_apply_handle
         * @instance
         */
        req_club_apply_handle.prototype.userid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Creates a new req_club_apply_handle instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {JhaoProto.Ireq_club_apply_handle=} [properties] Properties to set
         * @returns {JhaoProto.req_club_apply_handle} req_club_apply_handle instance
         */
        req_club_apply_handle.create = function create(properties) {
            return new req_club_apply_handle(properties);
        };

        /**
         * Encodes the specified req_club_apply_handle message. Does not implicitly {@link JhaoProto.req_club_apply_handle.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {JhaoProto.Ireq_club_apply_handle} message req_club_apply_handle message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_apply_handle.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id);
            if (message.isAgree != null && Object.hasOwnProperty.call(message, "isAgree"))
                writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isAgree);
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.clubid);
            if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                writer.uint32(/* id 4, wireType 0 =*/32).int64(message.userid);
            return writer;
        };

        /**
         * Encodes the specified req_club_apply_handle message, length delimited. Does not implicitly {@link JhaoProto.req_club_apply_handle.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {JhaoProto.Ireq_club_apply_handle} message req_club_apply_handle message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_apply_handle.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_apply_handle message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_apply_handle} req_club_apply_handle
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_apply_handle.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_apply_handle();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.id = reader.int32();
                        break;
                    }
                case 2: {
                        message.isAgree = reader.bool();
                        break;
                    }
                case 3: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 4: {
                        message.userid = reader.int64();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_apply_handle message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_apply_handle} req_club_apply_handle
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_apply_handle.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_apply_handle message.
         * @function verify
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_apply_handle.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.id != null && message.hasOwnProperty("id"))
                if (!$util.isInteger(message.id))
                    return "id: integer expected";
            if (message.isAgree != null && message.hasOwnProperty("isAgree"))
                if (typeof message.isAgree !== "boolean")
                    return "isAgree: boolean expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (!$util.isInteger(message.userid) && !(message.userid && $util.isInteger(message.userid.low) && $util.isInteger(message.userid.high)))
                    return "userid: integer|Long expected";
            return null;
        };

        /**
         * Creates a req_club_apply_handle message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_apply_handle} req_club_apply_handle
         */
        req_club_apply_handle.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_apply_handle)
                return object;
            var message = new $root.JhaoProto.req_club_apply_handle();
            if (object.id != null)
                message.id = object.id | 0;
            if (object.isAgree != null)
                message.isAgree = Boolean(object.isAgree);
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.userid != null)
                if ($util.Long)
                    (message.userid = $util.Long.fromValue(object.userid)).unsigned = false;
                else if (typeof object.userid === "string")
                    message.userid = parseInt(object.userid, 10);
                else if (typeof object.userid === "number")
                    message.userid = object.userid;
                else if (typeof object.userid === "object")
                    message.userid = new $util.LongBits(object.userid.low >>> 0, object.userid.high >>> 0).toNumber();
            return message;
        };

        /**
         * Creates a plain object from a req_club_apply_handle message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {JhaoProto.req_club_apply_handle} message req_club_apply_handle
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_apply_handle.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.id = 0;
                object.isAgree = false;
                object.clubid = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userid = options.longs === String ? "0" : 0;
            }
            if (message.id != null && message.hasOwnProperty("id"))
                object.id = message.id;
            if (message.isAgree != null && message.hasOwnProperty("isAgree"))
                object.isAgree = message.isAgree;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (typeof message.userid === "number")
                    object.userid = options.longs === String ? String(message.userid) : message.userid;
                else
                    object.userid = options.longs === String ? $util.Long.prototype.toString.call(message.userid) : options.longs === Number ? new $util.LongBits(message.userid.low >>> 0, message.userid.high >>> 0).toNumber() : message.userid;
            return object;
        };

        /**
         * Converts this req_club_apply_handle to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_apply_handle
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_apply_handle.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_apply_handle
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_apply_handle
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_apply_handle.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_apply_handle";
        };

        return req_club_apply_handle;
    })();

    JhaoProto.resp_club_apply_handle = (function() {

        /**
         * Properties of a resp_club_apply_handle.
         * @memberof JhaoProto
         * @interface Iresp_club_apply_handle
         */

        /**
         * Constructs a new resp_club_apply_handle.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_apply_handle.
         * @implements Iresp_club_apply_handle
         * @constructor
         * @param {JhaoProto.Iresp_club_apply_handle=} [properties] Properties to set
         */
        function resp_club_apply_handle(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_apply_handle instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {JhaoProto.Iresp_club_apply_handle=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_apply_handle} resp_club_apply_handle instance
         */
        resp_club_apply_handle.create = function create(properties) {
            return new resp_club_apply_handle(properties);
        };

        /**
         * Encodes the specified resp_club_apply_handle message. Does not implicitly {@link JhaoProto.resp_club_apply_handle.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {JhaoProto.Iresp_club_apply_handle} message resp_club_apply_handle message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_apply_handle.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_apply_handle message, length delimited. Does not implicitly {@link JhaoProto.resp_club_apply_handle.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {JhaoProto.Iresp_club_apply_handle} message resp_club_apply_handle message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_apply_handle.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_apply_handle message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_apply_handle} resp_club_apply_handle
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_apply_handle.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_apply_handle();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_apply_handle message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_apply_handle} resp_club_apply_handle
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_apply_handle.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_apply_handle message.
         * @function verify
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_apply_handle.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_apply_handle message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_apply_handle} resp_club_apply_handle
         */
        resp_club_apply_handle.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_apply_handle)
                return object;
            return new $root.JhaoProto.resp_club_apply_handle();
        };

        /**
         * Creates a plain object from a resp_club_apply_handle message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {JhaoProto.resp_club_apply_handle} message resp_club_apply_handle
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_apply_handle.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_apply_handle to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_apply_handle
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_apply_handle.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_apply_handle
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_apply_handle
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_apply_handle.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_apply_handle";
        };

        return resp_club_apply_handle;
    })();

    JhaoProto.req_club_exit = (function() {

        /**
         * Properties of a req_club_exit.
         * @memberof JhaoProto
         * @interface Ireq_club_exit
         * @property {number|null} [clubid] req_club_exit clubid
         */

        /**
         * Constructs a new req_club_exit.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_exit.
         * @implements Ireq_club_exit
         * @constructor
         * @param {JhaoProto.Ireq_club_exit=} [properties] Properties to set
         */
        function req_club_exit(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_exit clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_exit
         * @instance
         */
        req_club_exit.prototype.clubid = 0;

        /**
         * Creates a new req_club_exit instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {JhaoProto.Ireq_club_exit=} [properties] Properties to set
         * @returns {JhaoProto.req_club_exit} req_club_exit instance
         */
        req_club_exit.create = function create(properties) {
            return new req_club_exit(properties);
        };

        /**
         * Encodes the specified req_club_exit message. Does not implicitly {@link JhaoProto.req_club_exit.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {JhaoProto.Ireq_club_exit} message req_club_exit message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_exit.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            return writer;
        };

        /**
         * Encodes the specified req_club_exit message, length delimited. Does not implicitly {@link JhaoProto.req_club_exit.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {JhaoProto.Ireq_club_exit} message req_club_exit message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_exit.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_exit message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_exit} req_club_exit
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_exit.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_exit();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_exit message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_exit} req_club_exit
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_exit.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_exit message.
         * @function verify
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_exit.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            return null;
        };

        /**
         * Creates a req_club_exit message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_exit} req_club_exit
         */
        req_club_exit.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_exit)
                return object;
            var message = new $root.JhaoProto.req_club_exit();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_club_exit message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {JhaoProto.req_club_exit} message req_club_exit
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_exit.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.clubid = 0;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            return object;
        };

        /**
         * Converts this req_club_exit to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_exit
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_exit.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_exit
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_exit
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_exit.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_exit";
        };

        return req_club_exit;
    })();

    JhaoProto.resp_club_exit = (function() {

        /**
         * Properties of a resp_club_exit.
         * @memberof JhaoProto
         * @interface Iresp_club_exit
         */

        /**
         * Constructs a new resp_club_exit.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_exit.
         * @implements Iresp_club_exit
         * @constructor
         * @param {JhaoProto.Iresp_club_exit=} [properties] Properties to set
         */
        function resp_club_exit(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_exit instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {JhaoProto.Iresp_club_exit=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_exit} resp_club_exit instance
         */
        resp_club_exit.create = function create(properties) {
            return new resp_club_exit(properties);
        };

        /**
         * Encodes the specified resp_club_exit message. Does not implicitly {@link JhaoProto.resp_club_exit.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {JhaoProto.Iresp_club_exit} message resp_club_exit message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_exit.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_exit message, length delimited. Does not implicitly {@link JhaoProto.resp_club_exit.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {JhaoProto.Iresp_club_exit} message resp_club_exit message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_exit.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_exit message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_exit} resp_club_exit
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_exit.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_exit();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_exit message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_exit} resp_club_exit
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_exit.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_exit message.
         * @function verify
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_exit.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_exit message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_exit} resp_club_exit
         */
        resp_club_exit.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_exit)
                return object;
            return new $root.JhaoProto.resp_club_exit();
        };

        /**
         * Creates a plain object from a resp_club_exit message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {JhaoProto.resp_club_exit} message resp_club_exit
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_exit.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_exit to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_exit
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_exit.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_exit
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_exit
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_exit.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_exit";
        };

        return resp_club_exit;
    })();

    JhaoProto.req_club_member_list = (function() {

        /**
         * Properties of a req_club_member_list.
         * @memberof JhaoProto
         * @interface Ireq_club_member_list
         * @property {number|null} [clubid] req_club_member_list clubid
         */

        /**
         * Constructs a new req_club_member_list.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_member_list.
         * @implements Ireq_club_member_list
         * @constructor
         * @param {JhaoProto.Ireq_club_member_list=} [properties] Properties to set
         */
        function req_club_member_list(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_member_list clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_member_list
         * @instance
         */
        req_club_member_list.prototype.clubid = 0;

        /**
         * Creates a new req_club_member_list instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {JhaoProto.Ireq_club_member_list=} [properties] Properties to set
         * @returns {JhaoProto.req_club_member_list} req_club_member_list instance
         */
        req_club_member_list.create = function create(properties) {
            return new req_club_member_list(properties);
        };

        /**
         * Encodes the specified req_club_member_list message. Does not implicitly {@link JhaoProto.req_club_member_list.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {JhaoProto.Ireq_club_member_list} message req_club_member_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_member_list.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            return writer;
        };

        /**
         * Encodes the specified req_club_member_list message, length delimited. Does not implicitly {@link JhaoProto.req_club_member_list.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {JhaoProto.Ireq_club_member_list} message req_club_member_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_member_list.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_member_list message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_member_list} req_club_member_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_member_list.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_member_list();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_member_list message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_member_list} req_club_member_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_member_list.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_member_list message.
         * @function verify
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_member_list.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            return null;
        };

        /**
         * Creates a req_club_member_list message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_member_list} req_club_member_list
         */
        req_club_member_list.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_member_list)
                return object;
            var message = new $root.JhaoProto.req_club_member_list();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_club_member_list message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {JhaoProto.req_club_member_list} message req_club_member_list
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_member_list.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.clubid = 0;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            return object;
        };

        /**
         * Converts this req_club_member_list to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_member_list
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_member_list.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_member_list
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_member_list
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_member_list.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_member_list";
        };

        return req_club_member_list;
    })();

    JhaoProto.resp_club_member_list = (function() {

        /**
         * Properties of a resp_club_member_list.
         * @memberof JhaoProto
         * @interface Iresp_club_member_list
         * @property {Array.<JhaoProto.IClub_User>|null} [users] resp_club_member_list users
         */

        /**
         * Constructs a new resp_club_member_list.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_member_list.
         * @implements Iresp_club_member_list
         * @constructor
         * @param {JhaoProto.Iresp_club_member_list=} [properties] Properties to set
         */
        function resp_club_member_list(properties) {
            this.users = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_club_member_list users.
         * @member {Array.<JhaoProto.IClub_User>} users
         * @memberof JhaoProto.resp_club_member_list
         * @instance
         */
        resp_club_member_list.prototype.users = $util.emptyArray;

        /**
         * Creates a new resp_club_member_list instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {JhaoProto.Iresp_club_member_list=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_member_list} resp_club_member_list instance
         */
        resp_club_member_list.create = function create(properties) {
            return new resp_club_member_list(properties);
        };

        /**
         * Encodes the specified resp_club_member_list message. Does not implicitly {@link JhaoProto.resp_club_member_list.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {JhaoProto.Iresp_club_member_list} message resp_club_member_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_member_list.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.users != null && message.users.length)
                for (var i = 0; i < message.users.length; ++i)
                    $root.JhaoProto.Club_User.encode(message.users[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified resp_club_member_list message, length delimited. Does not implicitly {@link JhaoProto.resp_club_member_list.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {JhaoProto.Iresp_club_member_list} message resp_club_member_list message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_member_list.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_member_list message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_member_list} resp_club_member_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_member_list.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_member_list();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.users && message.users.length))
                            message.users = [];
                        message.users.push($root.JhaoProto.Club_User.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_member_list message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_member_list} resp_club_member_list
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_member_list.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_member_list message.
         * @function verify
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_member_list.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.users != null && message.hasOwnProperty("users")) {
                if (!Array.isArray(message.users))
                    return "users: array expected";
                for (var i = 0; i < message.users.length; ++i) {
                    var error = $root.JhaoProto.Club_User.verify(message.users[i]);
                    if (error)
                        return "users." + error;
                }
            }
            return null;
        };

        /**
         * Creates a resp_club_member_list message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_member_list} resp_club_member_list
         */
        resp_club_member_list.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_member_list)
                return object;
            var message = new $root.JhaoProto.resp_club_member_list();
            if (object.users) {
                if (!Array.isArray(object.users))
                    throw TypeError(".JhaoProto.resp_club_member_list.users: array expected");
                message.users = [];
                for (var i = 0; i < object.users.length; ++i) {
                    if (typeof object.users[i] !== "object")
                        throw TypeError(".JhaoProto.resp_club_member_list.users: object expected");
                    message.users[i] = $root.JhaoProto.Club_User.fromObject(object.users[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a resp_club_member_list message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {JhaoProto.resp_club_member_list} message resp_club_member_list
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_member_list.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.users = [];
            if (message.users && message.users.length) {
                object.users = [];
                for (var j = 0; j < message.users.length; ++j)
                    object.users[j] = $root.JhaoProto.Club_User.toObject(message.users[j], options);
            }
            return object;
        };

        /**
         * Converts this resp_club_member_list to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_member_list
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_member_list.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_member_list
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_member_list
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_member_list.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_member_list";
        };

        return resp_club_member_list;
    })();

    JhaoProto.req_club_delete_member = (function() {

        /**
         * Properties of a req_club_delete_member.
         * @memberof JhaoProto
         * @interface Ireq_club_delete_member
         * @property {number|null} [clubid] req_club_delete_member clubid
         * @property {number|Long|null} [userid] req_club_delete_member userid
         */

        /**
         * Constructs a new req_club_delete_member.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_delete_member.
         * @implements Ireq_club_delete_member
         * @constructor
         * @param {JhaoProto.Ireq_club_delete_member=} [properties] Properties to set
         */
        function req_club_delete_member(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_delete_member clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_delete_member
         * @instance
         */
        req_club_delete_member.prototype.clubid = 0;

        /**
         * req_club_delete_member userid.
         * @member {number|Long} userid
         * @memberof JhaoProto.req_club_delete_member
         * @instance
         */
        req_club_delete_member.prototype.userid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Creates a new req_club_delete_member instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {JhaoProto.Ireq_club_delete_member=} [properties] Properties to set
         * @returns {JhaoProto.req_club_delete_member} req_club_delete_member instance
         */
        req_club_delete_member.create = function create(properties) {
            return new req_club_delete_member(properties);
        };

        /**
         * Encodes the specified req_club_delete_member message. Does not implicitly {@link JhaoProto.req_club_delete_member.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {JhaoProto.Ireq_club_delete_member} message req_club_delete_member message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_delete_member.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.userid);
            return writer;
        };

        /**
         * Encodes the specified req_club_delete_member message, length delimited. Does not implicitly {@link JhaoProto.req_club_delete_member.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {JhaoProto.Ireq_club_delete_member} message req_club_delete_member message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_delete_member.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_delete_member message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_delete_member} req_club_delete_member
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_delete_member.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_delete_member();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 2: {
                        message.userid = reader.int64();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_delete_member message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_delete_member} req_club_delete_member
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_delete_member.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_delete_member message.
         * @function verify
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_delete_member.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (!$util.isInteger(message.userid) && !(message.userid && $util.isInteger(message.userid.low) && $util.isInteger(message.userid.high)))
                    return "userid: integer|Long expected";
            return null;
        };

        /**
         * Creates a req_club_delete_member message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_delete_member} req_club_delete_member
         */
        req_club_delete_member.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_delete_member)
                return object;
            var message = new $root.JhaoProto.req_club_delete_member();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.userid != null)
                if ($util.Long)
                    (message.userid = $util.Long.fromValue(object.userid)).unsigned = false;
                else if (typeof object.userid === "string")
                    message.userid = parseInt(object.userid, 10);
                else if (typeof object.userid === "number")
                    message.userid = object.userid;
                else if (typeof object.userid === "object")
                    message.userid = new $util.LongBits(object.userid.low >>> 0, object.userid.high >>> 0).toNumber();
            return message;
        };

        /**
         * Creates a plain object from a req_club_delete_member message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {JhaoProto.req_club_delete_member} message req_club_delete_member
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_delete_member.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.clubid = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userid = options.longs === String ? "0" : 0;
            }
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (typeof message.userid === "number")
                    object.userid = options.longs === String ? String(message.userid) : message.userid;
                else
                    object.userid = options.longs === String ? $util.Long.prototype.toString.call(message.userid) : options.longs === Number ? new $util.LongBits(message.userid.low >>> 0, message.userid.high >>> 0).toNumber() : message.userid;
            return object;
        };

        /**
         * Converts this req_club_delete_member to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_delete_member
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_delete_member.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_delete_member
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_delete_member
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_delete_member.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_delete_member";
        };

        return req_club_delete_member;
    })();

    JhaoProto.resp_club_delete_member = (function() {

        /**
         * Properties of a resp_club_delete_member.
         * @memberof JhaoProto
         * @interface Iresp_club_delete_member
         */

        /**
         * Constructs a new resp_club_delete_member.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_delete_member.
         * @implements Iresp_club_delete_member
         * @constructor
         * @param {JhaoProto.Iresp_club_delete_member=} [properties] Properties to set
         */
        function resp_club_delete_member(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_delete_member instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {JhaoProto.Iresp_club_delete_member=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_delete_member} resp_club_delete_member instance
         */
        resp_club_delete_member.create = function create(properties) {
            return new resp_club_delete_member(properties);
        };

        /**
         * Encodes the specified resp_club_delete_member message. Does not implicitly {@link JhaoProto.resp_club_delete_member.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {JhaoProto.Iresp_club_delete_member} message resp_club_delete_member message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_delete_member.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_delete_member message, length delimited. Does not implicitly {@link JhaoProto.resp_club_delete_member.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {JhaoProto.Iresp_club_delete_member} message resp_club_delete_member message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_delete_member.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_delete_member message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_delete_member} resp_club_delete_member
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_delete_member.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_delete_member();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_delete_member message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_delete_member} resp_club_delete_member
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_delete_member.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_delete_member message.
         * @function verify
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_delete_member.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_delete_member message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_delete_member} resp_club_delete_member
         */
        resp_club_delete_member.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_delete_member)
                return object;
            return new $root.JhaoProto.resp_club_delete_member();
        };

        /**
         * Creates a plain object from a resp_club_delete_member message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {JhaoProto.resp_club_delete_member} message resp_club_delete_member
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_delete_member.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_delete_member to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_delete_member
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_delete_member.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_delete_member
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_delete_member
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_delete_member.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_delete_member";
        };

        return resp_club_delete_member;
    })();

    JhaoProto.req_club_member_actor = (function() {

        /**
         * Properties of a req_club_member_actor.
         * @memberof JhaoProto
         * @interface Ireq_club_member_actor
         * @property {number|null} [clubid] req_club_member_actor clubid
         * @property {number|Long|null} [userid] req_club_member_actor userid
         * @property {number|null} [actor] req_club_member_actor actor
         */

        /**
         * Constructs a new req_club_member_actor.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_member_actor.
         * @implements Ireq_club_member_actor
         * @constructor
         * @param {JhaoProto.Ireq_club_member_actor=} [properties] Properties to set
         */
        function req_club_member_actor(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_member_actor clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_member_actor
         * @instance
         */
        req_club_member_actor.prototype.clubid = 0;

        /**
         * req_club_member_actor userid.
         * @member {number|Long} userid
         * @memberof JhaoProto.req_club_member_actor
         * @instance
         */
        req_club_member_actor.prototype.userid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * req_club_member_actor actor.
         * @member {number} actor
         * @memberof JhaoProto.req_club_member_actor
         * @instance
         */
        req_club_member_actor.prototype.actor = 0;

        /**
         * Creates a new req_club_member_actor instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {JhaoProto.Ireq_club_member_actor=} [properties] Properties to set
         * @returns {JhaoProto.req_club_member_actor} req_club_member_actor instance
         */
        req_club_member_actor.create = function create(properties) {
            return new req_club_member_actor(properties);
        };

        /**
         * Encodes the specified req_club_member_actor message. Does not implicitly {@link JhaoProto.req_club_member_actor.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {JhaoProto.Ireq_club_member_actor} message req_club_member_actor message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_member_actor.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.userid);
            if (message.actor != null && Object.hasOwnProperty.call(message, "actor"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.actor);
            return writer;
        };

        /**
         * Encodes the specified req_club_member_actor message, length delimited. Does not implicitly {@link JhaoProto.req_club_member_actor.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {JhaoProto.Ireq_club_member_actor} message req_club_member_actor message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_member_actor.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_member_actor message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_member_actor} req_club_member_actor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_member_actor.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_member_actor();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 2: {
                        message.userid = reader.int64();
                        break;
                    }
                case 3: {
                        message.actor = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_member_actor message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_member_actor} req_club_member_actor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_member_actor.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_member_actor message.
         * @function verify
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_member_actor.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (!$util.isInteger(message.userid) && !(message.userid && $util.isInteger(message.userid.low) && $util.isInteger(message.userid.high)))
                    return "userid: integer|Long expected";
            if (message.actor != null && message.hasOwnProperty("actor"))
                if (!$util.isInteger(message.actor))
                    return "actor: integer expected";
            return null;
        };

        /**
         * Creates a req_club_member_actor message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_member_actor} req_club_member_actor
         */
        req_club_member_actor.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_member_actor)
                return object;
            var message = new $root.JhaoProto.req_club_member_actor();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.userid != null)
                if ($util.Long)
                    (message.userid = $util.Long.fromValue(object.userid)).unsigned = false;
                else if (typeof object.userid === "string")
                    message.userid = parseInt(object.userid, 10);
                else if (typeof object.userid === "number")
                    message.userid = object.userid;
                else if (typeof object.userid === "object")
                    message.userid = new $util.LongBits(object.userid.low >>> 0, object.userid.high >>> 0).toNumber();
            if (object.actor != null)
                message.actor = object.actor | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_club_member_actor message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {JhaoProto.req_club_member_actor} message req_club_member_actor
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_member_actor.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.clubid = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userid = options.longs === String ? "0" : 0;
                object.actor = 0;
            }
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (typeof message.userid === "number")
                    object.userid = options.longs === String ? String(message.userid) : message.userid;
                else
                    object.userid = options.longs === String ? $util.Long.prototype.toString.call(message.userid) : options.longs === Number ? new $util.LongBits(message.userid.low >>> 0, message.userid.high >>> 0).toNumber() : message.userid;
            if (message.actor != null && message.hasOwnProperty("actor"))
                object.actor = message.actor;
            return object;
        };

        /**
         * Converts this req_club_member_actor to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_member_actor
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_member_actor.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_member_actor
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_member_actor
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_member_actor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_member_actor";
        };

        return req_club_member_actor;
    })();

    JhaoProto.resp_club_member_actor = (function() {

        /**
         * Properties of a resp_club_member_actor.
         * @memberof JhaoProto
         * @interface Iresp_club_member_actor
         */

        /**
         * Constructs a new resp_club_member_actor.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_member_actor.
         * @implements Iresp_club_member_actor
         * @constructor
         * @param {JhaoProto.Iresp_club_member_actor=} [properties] Properties to set
         */
        function resp_club_member_actor(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_member_actor instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {JhaoProto.Iresp_club_member_actor=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_member_actor} resp_club_member_actor instance
         */
        resp_club_member_actor.create = function create(properties) {
            return new resp_club_member_actor(properties);
        };

        /**
         * Encodes the specified resp_club_member_actor message. Does not implicitly {@link JhaoProto.resp_club_member_actor.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {JhaoProto.Iresp_club_member_actor} message resp_club_member_actor message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_member_actor.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_member_actor message, length delimited. Does not implicitly {@link JhaoProto.resp_club_member_actor.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {JhaoProto.Iresp_club_member_actor} message resp_club_member_actor message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_member_actor.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_member_actor message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_member_actor} resp_club_member_actor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_member_actor.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_member_actor();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_member_actor message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_member_actor} resp_club_member_actor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_member_actor.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_member_actor message.
         * @function verify
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_member_actor.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_member_actor message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_member_actor} resp_club_member_actor
         */
        resp_club_member_actor.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_member_actor)
                return object;
            return new $root.JhaoProto.resp_club_member_actor();
        };

        /**
         * Creates a plain object from a resp_club_member_actor message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {JhaoProto.resp_club_member_actor} message resp_club_member_actor
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_member_actor.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_member_actor to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_member_actor
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_member_actor.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_member_actor
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_member_actor
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_member_actor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_member_actor";
        };

        return resp_club_member_actor;
    })();

    JhaoProto.req_club_score = (function() {

        /**
         * Properties of a req_club_score.
         * @memberof JhaoProto
         * @interface Ireq_club_score
         * @property {number|null} [clubid] req_club_score clubid
         * @property {number|Long|null} [userid] req_club_score userid
         * @property {number|Long|null} [score] req_club_score score
         */

        /**
         * Constructs a new req_club_score.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_score.
         * @implements Ireq_club_score
         * @constructor
         * @param {JhaoProto.Ireq_club_score=} [properties] Properties to set
         */
        function req_club_score(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_score clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_score
         * @instance
         */
        req_club_score.prototype.clubid = 0;

        /**
         * req_club_score userid.
         * @member {number|Long} userid
         * @memberof JhaoProto.req_club_score
         * @instance
         */
        req_club_score.prototype.userid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * req_club_score score.
         * @member {number|Long} score
         * @memberof JhaoProto.req_club_score
         * @instance
         */
        req_club_score.prototype.score = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Creates a new req_club_score instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {JhaoProto.Ireq_club_score=} [properties] Properties to set
         * @returns {JhaoProto.req_club_score} req_club_score instance
         */
        req_club_score.create = function create(properties) {
            return new req_club_score(properties);
        };

        /**
         * Encodes the specified req_club_score message. Does not implicitly {@link JhaoProto.req_club_score.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {JhaoProto.Ireq_club_score} message req_club_score message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_score.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.userid);
            if (message.score != null && Object.hasOwnProperty.call(message, "score"))
                writer.uint32(/* id 3, wireType 0 =*/24).int64(message.score);
            return writer;
        };

        /**
         * Encodes the specified req_club_score message, length delimited. Does not implicitly {@link JhaoProto.req_club_score.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {JhaoProto.Ireq_club_score} message req_club_score message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_score.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_score message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_score} req_club_score
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_score.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_score();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 2: {
                        message.userid = reader.int64();
                        break;
                    }
                case 3: {
                        message.score = reader.int64();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_score message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_score} req_club_score
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_score.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_score message.
         * @function verify
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_score.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (!$util.isInteger(message.userid) && !(message.userid && $util.isInteger(message.userid.low) && $util.isInteger(message.userid.high)))
                    return "userid: integer|Long expected";
            if (message.score != null && message.hasOwnProperty("score"))
                if (!$util.isInteger(message.score) && !(message.score && $util.isInteger(message.score.low) && $util.isInteger(message.score.high)))
                    return "score: integer|Long expected";
            return null;
        };

        /**
         * Creates a req_club_score message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_score} req_club_score
         */
        req_club_score.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_score)
                return object;
            var message = new $root.JhaoProto.req_club_score();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.userid != null)
                if ($util.Long)
                    (message.userid = $util.Long.fromValue(object.userid)).unsigned = false;
                else if (typeof object.userid === "string")
                    message.userid = parseInt(object.userid, 10);
                else if (typeof object.userid === "number")
                    message.userid = object.userid;
                else if (typeof object.userid === "object")
                    message.userid = new $util.LongBits(object.userid.low >>> 0, object.userid.high >>> 0).toNumber();
            if (object.score != null)
                if ($util.Long)
                    (message.score = $util.Long.fromValue(object.score)).unsigned = false;
                else if (typeof object.score === "string")
                    message.score = parseInt(object.score, 10);
                else if (typeof object.score === "number")
                    message.score = object.score;
                else if (typeof object.score === "object")
                    message.score = new $util.LongBits(object.score.low >>> 0, object.score.high >>> 0).toNumber();
            return message;
        };

        /**
         * Creates a plain object from a req_club_score message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {JhaoProto.req_club_score} message req_club_score
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_score.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.clubid = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userid = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.score = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.score = options.longs === String ? "0" : 0;
            }
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (typeof message.userid === "number")
                    object.userid = options.longs === String ? String(message.userid) : message.userid;
                else
                    object.userid = options.longs === String ? $util.Long.prototype.toString.call(message.userid) : options.longs === Number ? new $util.LongBits(message.userid.low >>> 0, message.userid.high >>> 0).toNumber() : message.userid;
            if (message.score != null && message.hasOwnProperty("score"))
                if (typeof message.score === "number")
                    object.score = options.longs === String ? String(message.score) : message.score;
                else
                    object.score = options.longs === String ? $util.Long.prototype.toString.call(message.score) : options.longs === Number ? new $util.LongBits(message.score.low >>> 0, message.score.high >>> 0).toNumber() : message.score;
            return object;
        };

        /**
         * Converts this req_club_score to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_score
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_score.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_score
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_score
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_score.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_score";
        };

        return req_club_score;
    })();

    JhaoProto.resp_club_score = (function() {

        /**
         * Properties of a resp_club_score.
         * @memberof JhaoProto
         * @interface Iresp_club_score
         */

        /**
         * Constructs a new resp_club_score.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_score.
         * @implements Iresp_club_score
         * @constructor
         * @param {JhaoProto.Iresp_club_score=} [properties] Properties to set
         */
        function resp_club_score(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_score instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {JhaoProto.Iresp_club_score=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_score} resp_club_score instance
         */
        resp_club_score.create = function create(properties) {
            return new resp_club_score(properties);
        };

        /**
         * Encodes the specified resp_club_score message. Does not implicitly {@link JhaoProto.resp_club_score.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {JhaoProto.Iresp_club_score} message resp_club_score message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_score.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_score message, length delimited. Does not implicitly {@link JhaoProto.resp_club_score.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {JhaoProto.Iresp_club_score} message resp_club_score message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_score.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_score message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_score} resp_club_score
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_score.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_score();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_score message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_score} resp_club_score
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_score.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_score message.
         * @function verify
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_score.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_score message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_score} resp_club_score
         */
        resp_club_score.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_score)
                return object;
            return new $root.JhaoProto.resp_club_score();
        };

        /**
         * Creates a plain object from a resp_club_score message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {JhaoProto.resp_club_score} message resp_club_score
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_score.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_score to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_score
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_score.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_score
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_score
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_score.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_score";
        };

        return resp_club_score;
    })();

    JhaoProto.req_club_create_room_template = (function() {

        /**
         * Properties of a req_club_create_room_template.
         * @memberof JhaoProto
         * @interface Ireq_club_create_room_template
         * @property {number|null} [clubid] req_club_create_room_template clubid
         * @property {string|null} [name] req_club_create_room_template name
         * @property {number|null} [gameType] req_club_create_room_template gameType
         * @property {number|null} [roomType] req_club_create_room_template roomType
         * @property {JhaoProto.IRoomConfigBase|null} [roomConfigBase] req_club_create_room_template roomConfigBase
         * @property {JhaoProto.IRoomConfigMj|null} [roomConfigMj] req_club_create_room_template roomConfigMj
         */

        /**
         * Constructs a new req_club_create_room_template.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_create_room_template.
         * @implements Ireq_club_create_room_template
         * @constructor
         * @param {JhaoProto.Ireq_club_create_room_template=} [properties] Properties to set
         */
        function req_club_create_room_template(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_create_room_template clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_create_room_template
         * @instance
         */
        req_club_create_room_template.prototype.clubid = 0;

        /**
         * req_club_create_room_template name.
         * @member {string} name
         * @memberof JhaoProto.req_club_create_room_template
         * @instance
         */
        req_club_create_room_template.prototype.name = "";

        /**
         * req_club_create_room_template gameType.
         * @member {number} gameType
         * @memberof JhaoProto.req_club_create_room_template
         * @instance
         */
        req_club_create_room_template.prototype.gameType = 0;

        /**
         * req_club_create_room_template roomType.
         * @member {number} roomType
         * @memberof JhaoProto.req_club_create_room_template
         * @instance
         */
        req_club_create_room_template.prototype.roomType = 0;

        /**
         * req_club_create_room_template roomConfigBase.
         * @member {JhaoProto.IRoomConfigBase|null|undefined} roomConfigBase
         * @memberof JhaoProto.req_club_create_room_template
         * @instance
         */
        req_club_create_room_template.prototype.roomConfigBase = null;

        /**
         * req_club_create_room_template roomConfigMj.
         * @member {JhaoProto.IRoomConfigMj|null|undefined} roomConfigMj
         * @memberof JhaoProto.req_club_create_room_template
         * @instance
         */
        req_club_create_room_template.prototype.roomConfigMj = null;

        /**
         * Creates a new req_club_create_room_template instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {JhaoProto.Ireq_club_create_room_template=} [properties] Properties to set
         * @returns {JhaoProto.req_club_create_room_template} req_club_create_room_template instance
         */
        req_club_create_room_template.create = function create(properties) {
            return new req_club_create_room_template(properties);
        };

        /**
         * Encodes the specified req_club_create_room_template message. Does not implicitly {@link JhaoProto.req_club_create_room_template.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {JhaoProto.Ireq_club_create_room_template} message req_club_create_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_create_room_template.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.name);
            if (message.gameType != null && Object.hasOwnProperty.call(message, "gameType"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.gameType);
            if (message.roomType != null && Object.hasOwnProperty.call(message, "roomType"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.roomType);
            if (message.roomConfigBase != null && Object.hasOwnProperty.call(message, "roomConfigBase"))
                $root.JhaoProto.RoomConfigBase.encode(message.roomConfigBase, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
            if (message.roomConfigMj != null && Object.hasOwnProperty.call(message, "roomConfigMj"))
                $root.JhaoProto.RoomConfigMj.encode(message.roomConfigMj, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified req_club_create_room_template message, length delimited. Does not implicitly {@link JhaoProto.req_club_create_room_template.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {JhaoProto.Ireq_club_create_room_template} message req_club_create_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_create_room_template.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_create_room_template message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_create_room_template} req_club_create_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_create_room_template.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_create_room_template();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 2: {
                        message.name = reader.string();
                        break;
                    }
                case 3: {
                        message.gameType = reader.int32();
                        break;
                    }
                case 4: {
                        message.roomType = reader.int32();
                        break;
                    }
                case 5: {
                        message.roomConfigBase = $root.JhaoProto.RoomConfigBase.decode(reader, reader.uint32());
                        break;
                    }
                case 6: {
                        message.roomConfigMj = $root.JhaoProto.RoomConfigMj.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_create_room_template message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_create_room_template} req_club_create_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_create_room_template.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_create_room_template message.
         * @function verify
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_create_room_template.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.name != null && message.hasOwnProperty("name"))
                if (!$util.isString(message.name))
                    return "name: string expected";
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                if (!$util.isInteger(message.gameType))
                    return "gameType: integer expected";
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                if (!$util.isInteger(message.roomType))
                    return "roomType: integer expected";
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase")) {
                var error = $root.JhaoProto.RoomConfigBase.verify(message.roomConfigBase);
                if (error)
                    return "roomConfigBase." + error;
            }
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj")) {
                var error = $root.JhaoProto.RoomConfigMj.verify(message.roomConfigMj);
                if (error)
                    return "roomConfigMj." + error;
            }
            return null;
        };

        /**
         * Creates a req_club_create_room_template message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_create_room_template} req_club_create_room_template
         */
        req_club_create_room_template.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_create_room_template)
                return object;
            var message = new $root.JhaoProto.req_club_create_room_template();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.name != null)
                message.name = String(object.name);
            if (object.gameType != null)
                message.gameType = object.gameType | 0;
            if (object.roomType != null)
                message.roomType = object.roomType | 0;
            if (object.roomConfigBase != null) {
                if (typeof object.roomConfigBase !== "object")
                    throw TypeError(".JhaoProto.req_club_create_room_template.roomConfigBase: object expected");
                message.roomConfigBase = $root.JhaoProto.RoomConfigBase.fromObject(object.roomConfigBase);
            }
            if (object.roomConfigMj != null) {
                if (typeof object.roomConfigMj !== "object")
                    throw TypeError(".JhaoProto.req_club_create_room_template.roomConfigMj: object expected");
                message.roomConfigMj = $root.JhaoProto.RoomConfigMj.fromObject(object.roomConfigMj);
            }
            return message;
        };

        /**
         * Creates a plain object from a req_club_create_room_template message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {JhaoProto.req_club_create_room_template} message req_club_create_room_template
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_create_room_template.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.clubid = 0;
                object.name = "";
                object.gameType = 0;
                object.roomType = 0;
                object.roomConfigBase = null;
                object.roomConfigMj = null;
            }
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.name != null && message.hasOwnProperty("name"))
                object.name = message.name;
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                object.gameType = message.gameType;
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                object.roomType = message.roomType;
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase"))
                object.roomConfigBase = $root.JhaoProto.RoomConfigBase.toObject(message.roomConfigBase, options);
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj"))
                object.roomConfigMj = $root.JhaoProto.RoomConfigMj.toObject(message.roomConfigMj, options);
            return object;
        };

        /**
         * Converts this req_club_create_room_template to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_create_room_template
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_create_room_template.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_create_room_template
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_create_room_template
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_create_room_template.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_create_room_template";
        };

        return req_club_create_room_template;
    })();

    JhaoProto.resp_club_create_room_template = (function() {

        /**
         * Properties of a resp_club_create_room_template.
         * @memberof JhaoProto
         * @interface Iresp_club_create_room_template
         */

        /**
         * Constructs a new resp_club_create_room_template.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_create_room_template.
         * @implements Iresp_club_create_room_template
         * @constructor
         * @param {JhaoProto.Iresp_club_create_room_template=} [properties] Properties to set
         */
        function resp_club_create_room_template(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_create_room_template instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {JhaoProto.Iresp_club_create_room_template=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_create_room_template} resp_club_create_room_template instance
         */
        resp_club_create_room_template.create = function create(properties) {
            return new resp_club_create_room_template(properties);
        };

        /**
         * Encodes the specified resp_club_create_room_template message. Does not implicitly {@link JhaoProto.resp_club_create_room_template.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {JhaoProto.Iresp_club_create_room_template} message resp_club_create_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_create_room_template.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_create_room_template message, length delimited. Does not implicitly {@link JhaoProto.resp_club_create_room_template.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {JhaoProto.Iresp_club_create_room_template} message resp_club_create_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_create_room_template.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_create_room_template message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_create_room_template} resp_club_create_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_create_room_template.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_create_room_template();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_create_room_template message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_create_room_template} resp_club_create_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_create_room_template.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_create_room_template message.
         * @function verify
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_create_room_template.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_create_room_template message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_create_room_template} resp_club_create_room_template
         */
        resp_club_create_room_template.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_create_room_template)
                return object;
            return new $root.JhaoProto.resp_club_create_room_template();
        };

        /**
         * Creates a plain object from a resp_club_create_room_template message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {JhaoProto.resp_club_create_room_template} message resp_club_create_room_template
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_create_room_template.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_create_room_template to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_create_room_template
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_create_room_template.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_create_room_template
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_create_room_template
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_create_room_template.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_create_room_template";
        };

        return resp_club_create_room_template;
    })();

    JhaoProto.req_club_delete_room_template = (function() {

        /**
         * Properties of a req_club_delete_room_template.
         * @memberof JhaoProto
         * @interface Ireq_club_delete_room_template
         * @property {number|null} [id] req_club_delete_room_template id
         * @property {number|null} [clubid] req_club_delete_room_template clubid
         */

        /**
         * Constructs a new req_club_delete_room_template.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_delete_room_template.
         * @implements Ireq_club_delete_room_template
         * @constructor
         * @param {JhaoProto.Ireq_club_delete_room_template=} [properties] Properties to set
         */
        function req_club_delete_room_template(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_delete_room_template id.
         * @member {number} id
         * @memberof JhaoProto.req_club_delete_room_template
         * @instance
         */
        req_club_delete_room_template.prototype.id = 0;

        /**
         * req_club_delete_room_template clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_delete_room_template
         * @instance
         */
        req_club_delete_room_template.prototype.clubid = 0;

        /**
         * Creates a new req_club_delete_room_template instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {JhaoProto.Ireq_club_delete_room_template=} [properties] Properties to set
         * @returns {JhaoProto.req_club_delete_room_template} req_club_delete_room_template instance
         */
        req_club_delete_room_template.create = function create(properties) {
            return new req_club_delete_room_template(properties);
        };

        /**
         * Encodes the specified req_club_delete_room_template message. Does not implicitly {@link JhaoProto.req_club_delete_room_template.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {JhaoProto.Ireq_club_delete_room_template} message req_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_delete_room_template.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id);
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.clubid);
            return writer;
        };

        /**
         * Encodes the specified req_club_delete_room_template message, length delimited. Does not implicitly {@link JhaoProto.req_club_delete_room_template.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {JhaoProto.Ireq_club_delete_room_template} message req_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_delete_room_template.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_delete_room_template message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_delete_room_template} req_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_delete_room_template.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_delete_room_template();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.id = reader.int32();
                        break;
                    }
                case 2: {
                        message.clubid = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_delete_room_template message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_delete_room_template} req_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_delete_room_template.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_delete_room_template message.
         * @function verify
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_delete_room_template.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.id != null && message.hasOwnProperty("id"))
                if (!$util.isInteger(message.id))
                    return "id: integer expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            return null;
        };

        /**
         * Creates a req_club_delete_room_template message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_delete_room_template} req_club_delete_room_template
         */
        req_club_delete_room_template.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_delete_room_template)
                return object;
            var message = new $root.JhaoProto.req_club_delete_room_template();
            if (object.id != null)
                message.id = object.id | 0;
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_club_delete_room_template message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {JhaoProto.req_club_delete_room_template} message req_club_delete_room_template
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_delete_room_template.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.id = 0;
                object.clubid = 0;
            }
            if (message.id != null && message.hasOwnProperty("id"))
                object.id = message.id;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            return object;
        };

        /**
         * Converts this req_club_delete_room_template to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_delete_room_template
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_delete_room_template.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_delete_room_template
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_delete_room_template
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_delete_room_template.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_delete_room_template";
        };

        return req_club_delete_room_template;
    })();

    JhaoProto.resp_club_delete_room_template = (function() {

        /**
         * Properties of a resp_club_delete_room_template.
         * @memberof JhaoProto
         * @interface Iresp_club_delete_room_template
         */

        /**
         * Constructs a new resp_club_delete_room_template.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_delete_room_template.
         * @implements Iresp_club_delete_room_template
         * @constructor
         * @param {JhaoProto.Iresp_club_delete_room_template=} [properties] Properties to set
         */
        function resp_club_delete_room_template(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_club_delete_room_template instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {JhaoProto.Iresp_club_delete_room_template=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_delete_room_template} resp_club_delete_room_template instance
         */
        resp_club_delete_room_template.create = function create(properties) {
            return new resp_club_delete_room_template(properties);
        };

        /**
         * Encodes the specified resp_club_delete_room_template message. Does not implicitly {@link JhaoProto.resp_club_delete_room_template.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {JhaoProto.Iresp_club_delete_room_template} message resp_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_delete_room_template.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_club_delete_room_template message, length delimited. Does not implicitly {@link JhaoProto.resp_club_delete_room_template.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {JhaoProto.Iresp_club_delete_room_template} message resp_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_delete_room_template.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_delete_room_template message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_delete_room_template} resp_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_delete_room_template.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_delete_room_template();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_delete_room_template message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_delete_room_template} resp_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_delete_room_template.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_delete_room_template message.
         * @function verify
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_delete_room_template.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_club_delete_room_template message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_delete_room_template} resp_club_delete_room_template
         */
        resp_club_delete_room_template.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_delete_room_template)
                return object;
            return new $root.JhaoProto.resp_club_delete_room_template();
        };

        /**
         * Creates a plain object from a resp_club_delete_room_template message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {JhaoProto.resp_club_delete_room_template} message resp_club_delete_room_template
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_delete_room_template.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_club_delete_room_template to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_delete_room_template
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_delete_room_template.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_delete_room_template
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_delete_room_template
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_delete_room_template.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_delete_room_template";
        };

        return resp_club_delete_room_template;
    })();

    JhaoProto.req_club_room = (function() {

        /**
         * Properties of a req_club_room.
         * @memberof JhaoProto
         * @interface Ireq_club_room
         * @property {number|null} [clubid] req_club_room clubid
         */

        /**
         * Constructs a new req_club_room.
         * @memberof JhaoProto
         * @classdesc Represents a req_club_room.
         * @implements Ireq_club_room
         * @constructor
         * @param {JhaoProto.Ireq_club_room=} [properties] Properties to set
         */
        function req_club_room(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_club_room clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_club_room
         * @instance
         */
        req_club_room.prototype.clubid = 0;

        /**
         * Creates a new req_club_room instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {JhaoProto.Ireq_club_room=} [properties] Properties to set
         * @returns {JhaoProto.req_club_room} req_club_room instance
         */
        req_club_room.create = function create(properties) {
            return new req_club_room(properties);
        };

        /**
         * Encodes the specified req_club_room message. Does not implicitly {@link JhaoProto.req_club_room.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {JhaoProto.Ireq_club_room} message req_club_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_room.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            return writer;
        };

        /**
         * Encodes the specified req_club_room message, length delimited. Does not implicitly {@link JhaoProto.req_club_room.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {JhaoProto.Ireq_club_room} message req_club_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_club_room.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_club_room message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_club_room} req_club_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_room.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_club_room();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_club_room message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_club_room} req_club_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_club_room.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_club_room message.
         * @function verify
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_club_room.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            return null;
        };

        /**
         * Creates a req_club_room message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_club_room} req_club_room
         */
        req_club_room.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_club_room)
                return object;
            var message = new $root.JhaoProto.req_club_room();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_club_room message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {JhaoProto.req_club_room} message req_club_room
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_club_room.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.clubid = 0;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            return object;
        };

        /**
         * Converts this req_club_room to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_club_room
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_club_room.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_club_room
         * @function getTypeUrl
         * @memberof JhaoProto.req_club_room
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_club_room.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_club_room";
        };

        return req_club_room;
    })();

    JhaoProto.resp_club_room = (function() {

        /**
         * Properties of a resp_club_room.
         * @memberof JhaoProto
         * @interface Iresp_club_room
         * @property {Array.<JhaoProto.IRoomTemplate>|null} [template] resp_club_room template
         * @property {Array.<JhaoProto.IRoomModel>|null} [room] resp_club_room room
         */

        /**
         * Constructs a new resp_club_room.
         * @memberof JhaoProto
         * @classdesc Represents a resp_club_room.
         * @implements Iresp_club_room
         * @constructor
         * @param {JhaoProto.Iresp_club_room=} [properties] Properties to set
         */
        function resp_club_room(properties) {
            this.template = [];
            this.room = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_club_room template.
         * @member {Array.<JhaoProto.IRoomTemplate>} template
         * @memberof JhaoProto.resp_club_room
         * @instance
         */
        resp_club_room.prototype.template = $util.emptyArray;

        /**
         * resp_club_room room.
         * @member {Array.<JhaoProto.IRoomModel>} room
         * @memberof JhaoProto.resp_club_room
         * @instance
         */
        resp_club_room.prototype.room = $util.emptyArray;

        /**
         * Creates a new resp_club_room instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {JhaoProto.Iresp_club_room=} [properties] Properties to set
         * @returns {JhaoProto.resp_club_room} resp_club_room instance
         */
        resp_club_room.create = function create(properties) {
            return new resp_club_room(properties);
        };

        /**
         * Encodes the specified resp_club_room message. Does not implicitly {@link JhaoProto.resp_club_room.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {JhaoProto.Iresp_club_room} message resp_club_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_room.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.template != null && message.template.length)
                for (var i = 0; i < message.template.length; ++i)
                    $root.JhaoProto.RoomTemplate.encode(message.template[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            if (message.room != null && message.room.length)
                for (var i = 0; i < message.room.length; ++i)
                    $root.JhaoProto.RoomModel.encode(message.room[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified resp_club_room message, length delimited. Does not implicitly {@link JhaoProto.resp_club_room.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {JhaoProto.Iresp_club_room} message resp_club_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_club_room.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_club_room message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_club_room} resp_club_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_room.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_club_room();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.template && message.template.length))
                            message.template = [];
                        message.template.push($root.JhaoProto.RoomTemplate.decode(reader, reader.uint32()));
                        break;
                    }
                case 2: {
                        if (!(message.room && message.room.length))
                            message.room = [];
                        message.room.push($root.JhaoProto.RoomModel.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_club_room message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_club_room} resp_club_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_club_room.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_club_room message.
         * @function verify
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_club_room.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.template != null && message.hasOwnProperty("template")) {
                if (!Array.isArray(message.template))
                    return "template: array expected";
                for (var i = 0; i < message.template.length; ++i) {
                    var error = $root.JhaoProto.RoomTemplate.verify(message.template[i]);
                    if (error)
                        return "template." + error;
                }
            }
            if (message.room != null && message.hasOwnProperty("room")) {
                if (!Array.isArray(message.room))
                    return "room: array expected";
                for (var i = 0; i < message.room.length; ++i) {
                    var error = $root.JhaoProto.RoomModel.verify(message.room[i]);
                    if (error)
                        return "room." + error;
                }
            }
            return null;
        };

        /**
         * Creates a resp_club_room message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_club_room} resp_club_room
         */
        resp_club_room.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_club_room)
                return object;
            var message = new $root.JhaoProto.resp_club_room();
            if (object.template) {
                if (!Array.isArray(object.template))
                    throw TypeError(".JhaoProto.resp_club_room.template: array expected");
                message.template = [];
                for (var i = 0; i < object.template.length; ++i) {
                    if (typeof object.template[i] !== "object")
                        throw TypeError(".JhaoProto.resp_club_room.template: object expected");
                    message.template[i] = $root.JhaoProto.RoomTemplate.fromObject(object.template[i]);
                }
            }
            if (object.room) {
                if (!Array.isArray(object.room))
                    throw TypeError(".JhaoProto.resp_club_room.room: array expected");
                message.room = [];
                for (var i = 0; i < object.room.length; ++i) {
                    if (typeof object.room[i] !== "object")
                        throw TypeError(".JhaoProto.resp_club_room.room: object expected");
                    message.room[i] = $root.JhaoProto.RoomModel.fromObject(object.room[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a resp_club_room message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {JhaoProto.resp_club_room} message resp_club_room
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_club_room.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults) {
                object.template = [];
                object.room = [];
            }
            if (message.template && message.template.length) {
                object.template = [];
                for (var j = 0; j < message.template.length; ++j)
                    object.template[j] = $root.JhaoProto.RoomTemplate.toObject(message.template[j], options);
            }
            if (message.room && message.room.length) {
                object.room = [];
                for (var j = 0; j < message.room.length; ++j)
                    object.room[j] = $root.JhaoProto.RoomModel.toObject(message.room[j], options);
            }
            return object;
        };

        /**
         * Converts this resp_club_room to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_club_room
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_club_room.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_club_room
         * @function getTypeUrl
         * @memberof JhaoProto.resp_club_room
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_club_room.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_club_room";
        };

        return resp_club_room;
    })();

    JhaoProto.ServerInfo = (function() {

        /**
         * Properties of a ServerInfo.
         * @memberof JhaoProto
         * @interface IServerInfo
         * @property {number|null} [serverId] ServerInfo serverId
         * @property {string|null} [ip] ServerInfo ip
         * @property {number|null} [httpPort] ServerInfo httpPort
         * @property {number|null} [socketPort] ServerInfo socketPort
         */

        /**
         * Constructs a new ServerInfo.
         * @memberof JhaoProto
         * @classdesc Represents a ServerInfo.
         * @implements IServerInfo
         * @constructor
         * @param {JhaoProto.IServerInfo=} [properties] Properties to set
         */
        function ServerInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * ServerInfo serverId.
         * @member {number} serverId
         * @memberof JhaoProto.ServerInfo
         * @instance
         */
        ServerInfo.prototype.serverId = 0;

        /**
         * ServerInfo ip.
         * @member {string} ip
         * @memberof JhaoProto.ServerInfo
         * @instance
         */
        ServerInfo.prototype.ip = "";

        /**
         * ServerInfo httpPort.
         * @member {number} httpPort
         * @memberof JhaoProto.ServerInfo
         * @instance
         */
        ServerInfo.prototype.httpPort = 0;

        /**
         * ServerInfo socketPort.
         * @member {number} socketPort
         * @memberof JhaoProto.ServerInfo
         * @instance
         */
        ServerInfo.prototype.socketPort = 0;

        /**
         * Creates a new ServerInfo instance using the specified properties.
         * @function create
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {JhaoProto.IServerInfo=} [properties] Properties to set
         * @returns {JhaoProto.ServerInfo} ServerInfo instance
         */
        ServerInfo.create = function create(properties) {
            return new ServerInfo(properties);
        };

        /**
         * Encodes the specified ServerInfo message. Does not implicitly {@link JhaoProto.ServerInfo.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {JhaoProto.IServerInfo} message ServerInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ServerInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.serverId != null && Object.hasOwnProperty.call(message, "serverId"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.serverId);
            if (message.ip != null && Object.hasOwnProperty.call(message, "ip"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.ip);
            if (message.httpPort != null && Object.hasOwnProperty.call(message, "httpPort"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.httpPort);
            if (message.socketPort != null && Object.hasOwnProperty.call(message, "socketPort"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.socketPort);
            return writer;
        };

        /**
         * Encodes the specified ServerInfo message, length delimited. Does not implicitly {@link JhaoProto.ServerInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {JhaoProto.IServerInfo} message ServerInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ServerInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ServerInfo message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.ServerInfo} ServerInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ServerInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.ServerInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.serverId = reader.int32();
                        break;
                    }
                case 2: {
                        message.ip = reader.string();
                        break;
                    }
                case 3: {
                        message.httpPort = reader.int32();
                        break;
                    }
                case 4: {
                        message.socketPort = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a ServerInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.ServerInfo} ServerInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ServerInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ServerInfo message.
         * @function verify
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ServerInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.serverId != null && message.hasOwnProperty("serverId"))
                if (!$util.isInteger(message.serverId))
                    return "serverId: integer expected";
            if (message.ip != null && message.hasOwnProperty("ip"))
                if (!$util.isString(message.ip))
                    return "ip: string expected";
            if (message.httpPort != null && message.hasOwnProperty("httpPort"))
                if (!$util.isInteger(message.httpPort))
                    return "httpPort: integer expected";
            if (message.socketPort != null && message.hasOwnProperty("socketPort"))
                if (!$util.isInteger(message.socketPort))
                    return "socketPort: integer expected";
            return null;
        };

        /**
         * Creates a ServerInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.ServerInfo} ServerInfo
         */
        ServerInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.ServerInfo)
                return object;
            var message = new $root.JhaoProto.ServerInfo();
            if (object.serverId != null)
                message.serverId = object.serverId | 0;
            if (object.ip != null)
                message.ip = String(object.ip);
            if (object.httpPort != null)
                message.httpPort = object.httpPort | 0;
            if (object.socketPort != null)
                message.socketPort = object.socketPort | 0;
            return message;
        };

        /**
         * Creates a plain object from a ServerInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {JhaoProto.ServerInfo} message ServerInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ServerInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.serverId = 0;
                object.ip = "";
                object.httpPort = 0;
                object.socketPort = 0;
            }
            if (message.serverId != null && message.hasOwnProperty("serverId"))
                object.serverId = message.serverId;
            if (message.ip != null && message.hasOwnProperty("ip"))
                object.ip = message.ip;
            if (message.httpPort != null && message.hasOwnProperty("httpPort"))
                object.httpPort = message.httpPort;
            if (message.socketPort != null && message.hasOwnProperty("socketPort"))
                object.socketPort = message.socketPort;
            return object;
        };

        /**
         * Converts this ServerInfo to JSON.
         * @function toJSON
         * @memberof JhaoProto.ServerInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ServerInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ServerInfo
         * @function getTypeUrl
         * @memberof JhaoProto.ServerInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ServerInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.ServerInfo";
        };

        return ServerInfo;
    })();

    JhaoProto.UserInfo = (function() {

        /**
         * Properties of a UserInfo.
         * @memberof JhaoProto
         * @interface IUserInfo
         * @property {number|Long|null} [userId] 服务器userid
         * @property {string|null} [userName] user name
         * @property {string|null} [userPhoto] user photo
         * @property {number|null} [sex] UserInfo sex
         * @property {number|Long|null} [coins] UserInfo coins
         * @property {number|Long|null} [diamond] UserInfo diamond
         * @property {number|null} [roomId] UserInfo roomId
         */

        /**
         * Constructs a new UserInfo.
         * @memberof JhaoProto
         * @classdesc Represents a UserInfo.
         * @implements IUserInfo
         * @constructor
         * @param {JhaoProto.IUserInfo=} [properties] Properties to set
         */
        function UserInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * 服务器userid
         * @member {number|Long} userId
         * @memberof JhaoProto.UserInfo
         * @instance
         */
        UserInfo.prototype.userId = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * user name
         * @member {string} userName
         * @memberof JhaoProto.UserInfo
         * @instance
         */
        UserInfo.prototype.userName = "";

        /**
         * user photo
         * @member {string} userPhoto
         * @memberof JhaoProto.UserInfo
         * @instance
         */
        UserInfo.prototype.userPhoto = "";

        /**
         * UserInfo sex.
         * @member {number} sex
         * @memberof JhaoProto.UserInfo
         * @instance
         */
        UserInfo.prototype.sex = 0;

        /**
         * UserInfo coins.
         * @member {number|Long} coins
         * @memberof JhaoProto.UserInfo
         * @instance
         */
        UserInfo.prototype.coins = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * UserInfo diamond.
         * @member {number|Long} diamond
         * @memberof JhaoProto.UserInfo
         * @instance
         */
        UserInfo.prototype.diamond = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * UserInfo roomId.
         * @member {number} roomId
         * @memberof JhaoProto.UserInfo
         * @instance
         */
        UserInfo.prototype.roomId = 0;

        /**
         * Creates a new UserInfo instance using the specified properties.
         * @function create
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {JhaoProto.IUserInfo=} [properties] Properties to set
         * @returns {JhaoProto.UserInfo} UserInfo instance
         */
        UserInfo.create = function create(properties) {
            return new UserInfo(properties);
        };

        /**
         * Encodes the specified UserInfo message. Does not implicitly {@link JhaoProto.UserInfo.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {JhaoProto.IUserInfo} message UserInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        UserInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
                writer.uint32(/* id 1, wireType 0 =*/8).int64(message.userId);
            if (message.userName != null && Object.hasOwnProperty.call(message, "userName"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.userName);
            if (message.userPhoto != null && Object.hasOwnProperty.call(message, "userPhoto"))
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.userPhoto);
            if (message.sex != null && Object.hasOwnProperty.call(message, "sex"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.sex);
            if (message.coins != null && Object.hasOwnProperty.call(message, "coins"))
                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.coins);
            if (message.diamond != null && Object.hasOwnProperty.call(message, "diamond"))
                writer.uint32(/* id 6, wireType 0 =*/48).int64(message.diamond);
            if (message.roomId != null && Object.hasOwnProperty.call(message, "roomId"))
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.roomId);
            return writer;
        };

        /**
         * Encodes the specified UserInfo message, length delimited. Does not implicitly {@link JhaoProto.UserInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {JhaoProto.IUserInfo} message UserInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        UserInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a UserInfo message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.UserInfo} UserInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        UserInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.UserInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.userId = reader.int64();
                        break;
                    }
                case 2: {
                        message.userName = reader.string();
                        break;
                    }
                case 3: {
                        message.userPhoto = reader.string();
                        break;
                    }
                case 4: {
                        message.sex = reader.int32();
                        break;
                    }
                case 5: {
                        message.coins = reader.int64();
                        break;
                    }
                case 6: {
                        message.diamond = reader.int64();
                        break;
                    }
                case 7: {
                        message.roomId = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a UserInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.UserInfo} UserInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        UserInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a UserInfo message.
         * @function verify
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        UserInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.userId != null && message.hasOwnProperty("userId"))
                if (!$util.isInteger(message.userId) && !(message.userId && $util.isInteger(message.userId.low) && $util.isInteger(message.userId.high)))
                    return "userId: integer|Long expected";
            if (message.userName != null && message.hasOwnProperty("userName"))
                if (!$util.isString(message.userName))
                    return "userName: string expected";
            if (message.userPhoto != null && message.hasOwnProperty("userPhoto"))
                if (!$util.isString(message.userPhoto))
                    return "userPhoto: string expected";
            if (message.sex != null && message.hasOwnProperty("sex"))
                if (!$util.isInteger(message.sex))
                    return "sex: integer expected";
            if (message.coins != null && message.hasOwnProperty("coins"))
                if (!$util.isInteger(message.coins) && !(message.coins && $util.isInteger(message.coins.low) && $util.isInteger(message.coins.high)))
                    return "coins: integer|Long expected";
            if (message.diamond != null && message.hasOwnProperty("diamond"))
                if (!$util.isInteger(message.diamond) && !(message.diamond && $util.isInteger(message.diamond.low) && $util.isInteger(message.diamond.high)))
                    return "diamond: integer|Long expected";
            if (message.roomId != null && message.hasOwnProperty("roomId"))
                if (!$util.isInteger(message.roomId))
                    return "roomId: integer expected";
            return null;
        };

        /**
         * Creates a UserInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.UserInfo} UserInfo
         */
        UserInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.UserInfo)
                return object;
            var message = new $root.JhaoProto.UserInfo();
            if (object.userId != null)
                if ($util.Long)
                    (message.userId = $util.Long.fromValue(object.userId)).unsigned = false;
                else if (typeof object.userId === "string")
                    message.userId = parseInt(object.userId, 10);
                else if (typeof object.userId === "number")
                    message.userId = object.userId;
                else if (typeof object.userId === "object")
                    message.userId = new $util.LongBits(object.userId.low >>> 0, object.userId.high >>> 0).toNumber();
            if (object.userName != null)
                message.userName = String(object.userName);
            if (object.userPhoto != null)
                message.userPhoto = String(object.userPhoto);
            if (object.sex != null)
                message.sex = object.sex | 0;
            if (object.coins != null)
                if ($util.Long)
                    (message.coins = $util.Long.fromValue(object.coins)).unsigned = false;
                else if (typeof object.coins === "string")
                    message.coins = parseInt(object.coins, 10);
                else if (typeof object.coins === "number")
                    message.coins = object.coins;
                else if (typeof object.coins === "object")
                    message.coins = new $util.LongBits(object.coins.low >>> 0, object.coins.high >>> 0).toNumber();
            if (object.diamond != null)
                if ($util.Long)
                    (message.diamond = $util.Long.fromValue(object.diamond)).unsigned = false;
                else if (typeof object.diamond === "string")
                    message.diamond = parseInt(object.diamond, 10);
                else if (typeof object.diamond === "number")
                    message.diamond = object.diamond;
                else if (typeof object.diamond === "object")
                    message.diamond = new $util.LongBits(object.diamond.low >>> 0, object.diamond.high >>> 0).toNumber();
            if (object.roomId != null)
                message.roomId = object.roomId | 0;
            return message;
        };

        /**
         * Creates a plain object from a UserInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {JhaoProto.UserInfo} message UserInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        UserInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userId = options.longs === String ? "0" : 0;
                object.userName = "";
                object.userPhoto = "";
                object.sex = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.coins = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.coins = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.diamond = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.diamond = options.longs === String ? "0" : 0;
                object.roomId = 0;
            }
            if (message.userId != null && message.hasOwnProperty("userId"))
                if (typeof message.userId === "number")
                    object.userId = options.longs === String ? String(message.userId) : message.userId;
                else
                    object.userId = options.longs === String ? $util.Long.prototype.toString.call(message.userId) : options.longs === Number ? new $util.LongBits(message.userId.low >>> 0, message.userId.high >>> 0).toNumber() : message.userId;
            if (message.userName != null && message.hasOwnProperty("userName"))
                object.userName = message.userName;
            if (message.userPhoto != null && message.hasOwnProperty("userPhoto"))
                object.userPhoto = message.userPhoto;
            if (message.sex != null && message.hasOwnProperty("sex"))
                object.sex = message.sex;
            if (message.coins != null && message.hasOwnProperty("coins"))
                if (typeof message.coins === "number")
                    object.coins = options.longs === String ? String(message.coins) : message.coins;
                else
                    object.coins = options.longs === String ? $util.Long.prototype.toString.call(message.coins) : options.longs === Number ? new $util.LongBits(message.coins.low >>> 0, message.coins.high >>> 0).toNumber() : message.coins;
            if (message.diamond != null && message.hasOwnProperty("diamond"))
                if (typeof message.diamond === "number")
                    object.diamond = options.longs === String ? String(message.diamond) : message.diamond;
                else
                    object.diamond = options.longs === String ? $util.Long.prototype.toString.call(message.diamond) : options.longs === Number ? new $util.LongBits(message.diamond.low >>> 0, message.diamond.high >>> 0).toNumber() : message.diamond;
            if (message.roomId != null && message.hasOwnProperty("roomId"))
                object.roomId = message.roomId;
            return object;
        };

        /**
         * Converts this UserInfo to JSON.
         * @function toJSON
         * @memberof JhaoProto.UserInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        UserInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for UserInfo
         * @function getTypeUrl
         * @memberof JhaoProto.UserInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        UserInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.UserInfo";
        };

        return UserInfo;
    })();

    JhaoProto.ClubInfo = (function() {

        /**
         * Properties of a ClubInfo.
         * @memberof JhaoProto
         * @interface IClubInfo
         * @property {number|null} [clubid] ClubInfo clubid
         * @property {number|Long|null} [creator] ClubInfo creator
         * @property {string|null} [clubName] ClubInfo clubName
         * @property {string|null} [notice] ClubInfo notice
         * @property {number|Long|null} [createTime] ClubInfo createTime
         * @property {number|null} [clubState] ClubInfo clubState
         * @property {number|null} [actor] ClubInfo actor
         * @property {number|Long|null} [joinTime] ClubInfo joinTime
         * @property {number|null} [approver] ClubInfo approver
         * @property {number|null} [usercount] ClubInfo usercount
         * @property {string|null} [headimg] ClubInfo headimg
         * @property {string|null} [nickName] ClubInfo nickName
         * @property {number|null} [sex] ClubInfo sex
         * @property {number|null} [userState] ClubInfo userState
         */

        /**
         * Constructs a new ClubInfo.
         * @memberof JhaoProto
         * @classdesc Represents a ClubInfo.
         * @implements IClubInfo
         * @constructor
         * @param {JhaoProto.IClubInfo=} [properties] Properties to set
         */
        function ClubInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * ClubInfo clubid.
         * @member {number} clubid
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.clubid = 0;

        /**
         * ClubInfo creator.
         * @member {number|Long} creator
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.creator = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * ClubInfo clubName.
         * @member {string} clubName
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.clubName = "";

        /**
         * ClubInfo notice.
         * @member {string} notice
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.notice = "";

        /**
         * ClubInfo createTime.
         * @member {number|Long} createTime
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.createTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * ClubInfo clubState.
         * @member {number} clubState
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.clubState = 0;

        /**
         * ClubInfo actor.
         * @member {number} actor
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.actor = 0;

        /**
         * ClubInfo joinTime.
         * @member {number|Long} joinTime
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.joinTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * ClubInfo approver.
         * @member {number} approver
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.approver = 0;

        /**
         * ClubInfo usercount.
         * @member {number} usercount
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.usercount = 0;

        /**
         * ClubInfo headimg.
         * @member {string} headimg
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.headimg = "";

        /**
         * ClubInfo nickName.
         * @member {string} nickName
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.nickName = "";

        /**
         * ClubInfo sex.
         * @member {number} sex
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.sex = 0;

        /**
         * ClubInfo userState.
         * @member {number} userState
         * @memberof JhaoProto.ClubInfo
         * @instance
         */
        ClubInfo.prototype.userState = 0;

        /**
         * Creates a new ClubInfo instance using the specified properties.
         * @function create
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {JhaoProto.IClubInfo=} [properties] Properties to set
         * @returns {JhaoProto.ClubInfo} ClubInfo instance
         */
        ClubInfo.create = function create(properties) {
            return new ClubInfo(properties);
        };

        /**
         * Encodes the specified ClubInfo message. Does not implicitly {@link JhaoProto.ClubInfo.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {JhaoProto.IClubInfo} message ClubInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ClubInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.clubid);
            if (message.creator != null && Object.hasOwnProperty.call(message, "creator"))
                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.creator);
            if (message.clubName != null && Object.hasOwnProperty.call(message, "clubName"))
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.clubName);
            if (message.notice != null && Object.hasOwnProperty.call(message, "notice"))
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.notice);
            if (message.createTime != null && Object.hasOwnProperty.call(message, "createTime"))
                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.createTime);
            if (message.clubState != null && Object.hasOwnProperty.call(message, "clubState"))
                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.clubState);
            if (message.actor != null && Object.hasOwnProperty.call(message, "actor"))
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.actor);
            if (message.joinTime != null && Object.hasOwnProperty.call(message, "joinTime"))
                writer.uint32(/* id 8, wireType 0 =*/64).int64(message.joinTime);
            if (message.approver != null && Object.hasOwnProperty.call(message, "approver"))
                writer.uint32(/* id 9, wireType 0 =*/72).int32(message.approver);
            if (message.usercount != null && Object.hasOwnProperty.call(message, "usercount"))
                writer.uint32(/* id 10, wireType 0 =*/80).int32(message.usercount);
            if (message.headimg != null && Object.hasOwnProperty.call(message, "headimg"))
                writer.uint32(/* id 11, wireType 2 =*/90).string(message.headimg);
            if (message.nickName != null && Object.hasOwnProperty.call(message, "nickName"))
                writer.uint32(/* id 12, wireType 2 =*/98).string(message.nickName);
            if (message.sex != null && Object.hasOwnProperty.call(message, "sex"))
                writer.uint32(/* id 13, wireType 0 =*/104).int32(message.sex);
            if (message.userState != null && Object.hasOwnProperty.call(message, "userState"))
                writer.uint32(/* id 14, wireType 0 =*/112).int32(message.userState);
            return writer;
        };

        /**
         * Encodes the specified ClubInfo message, length delimited. Does not implicitly {@link JhaoProto.ClubInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {JhaoProto.IClubInfo} message ClubInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ClubInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ClubInfo message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.ClubInfo} ClubInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ClubInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.ClubInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 2: {
                        message.creator = reader.int64();
                        break;
                    }
                case 3: {
                        message.clubName = reader.string();
                        break;
                    }
                case 4: {
                        message.notice = reader.string();
                        break;
                    }
                case 5: {
                        message.createTime = reader.int64();
                        break;
                    }
                case 6: {
                        message.clubState = reader.int32();
                        break;
                    }
                case 7: {
                        message.actor = reader.int32();
                        break;
                    }
                case 8: {
                        message.joinTime = reader.int64();
                        break;
                    }
                case 9: {
                        message.approver = reader.int32();
                        break;
                    }
                case 10: {
                        message.usercount = reader.int32();
                        break;
                    }
                case 11: {
                        message.headimg = reader.string();
                        break;
                    }
                case 12: {
                        message.nickName = reader.string();
                        break;
                    }
                case 13: {
                        message.sex = reader.int32();
                        break;
                    }
                case 14: {
                        message.userState = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a ClubInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.ClubInfo} ClubInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ClubInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ClubInfo message.
         * @function verify
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ClubInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.creator != null && message.hasOwnProperty("creator"))
                if (!$util.isInteger(message.creator) && !(message.creator && $util.isInteger(message.creator.low) && $util.isInteger(message.creator.high)))
                    return "creator: integer|Long expected";
            if (message.clubName != null && message.hasOwnProperty("clubName"))
                if (!$util.isString(message.clubName))
                    return "clubName: string expected";
            if (message.notice != null && message.hasOwnProperty("notice"))
                if (!$util.isString(message.notice))
                    return "notice: string expected";
            if (message.createTime != null && message.hasOwnProperty("createTime"))
                if (!$util.isInteger(message.createTime) && !(message.createTime && $util.isInteger(message.createTime.low) && $util.isInteger(message.createTime.high)))
                    return "createTime: integer|Long expected";
            if (message.clubState != null && message.hasOwnProperty("clubState"))
                if (!$util.isInteger(message.clubState))
                    return "clubState: integer expected";
            if (message.actor != null && message.hasOwnProperty("actor"))
                if (!$util.isInteger(message.actor))
                    return "actor: integer expected";
            if (message.joinTime != null && message.hasOwnProperty("joinTime"))
                if (!$util.isInteger(message.joinTime) && !(message.joinTime && $util.isInteger(message.joinTime.low) && $util.isInteger(message.joinTime.high)))
                    return "joinTime: integer|Long expected";
            if (message.approver != null && message.hasOwnProperty("approver"))
                if (!$util.isInteger(message.approver))
                    return "approver: integer expected";
            if (message.usercount != null && message.hasOwnProperty("usercount"))
                if (!$util.isInteger(message.usercount))
                    return "usercount: integer expected";
            if (message.headimg != null && message.hasOwnProperty("headimg"))
                if (!$util.isString(message.headimg))
                    return "headimg: string expected";
            if (message.nickName != null && message.hasOwnProperty("nickName"))
                if (!$util.isString(message.nickName))
                    return "nickName: string expected";
            if (message.sex != null && message.hasOwnProperty("sex"))
                if (!$util.isInteger(message.sex))
                    return "sex: integer expected";
            if (message.userState != null && message.hasOwnProperty("userState"))
                if (!$util.isInteger(message.userState))
                    return "userState: integer expected";
            return null;
        };

        /**
         * Creates a ClubInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.ClubInfo} ClubInfo
         */
        ClubInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.ClubInfo)
                return object;
            var message = new $root.JhaoProto.ClubInfo();
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.creator != null)
                if ($util.Long)
                    (message.creator = $util.Long.fromValue(object.creator)).unsigned = false;
                else if (typeof object.creator === "string")
                    message.creator = parseInt(object.creator, 10);
                else if (typeof object.creator === "number")
                    message.creator = object.creator;
                else if (typeof object.creator === "object")
                    message.creator = new $util.LongBits(object.creator.low >>> 0, object.creator.high >>> 0).toNumber();
            if (object.clubName != null)
                message.clubName = String(object.clubName);
            if (object.notice != null)
                message.notice = String(object.notice);
            if (object.createTime != null)
                if ($util.Long)
                    (message.createTime = $util.Long.fromValue(object.createTime)).unsigned = false;
                else if (typeof object.createTime === "string")
                    message.createTime = parseInt(object.createTime, 10);
                else if (typeof object.createTime === "number")
                    message.createTime = object.createTime;
                else if (typeof object.createTime === "object")
                    message.createTime = new $util.LongBits(object.createTime.low >>> 0, object.createTime.high >>> 0).toNumber();
            if (object.clubState != null)
                message.clubState = object.clubState | 0;
            if (object.actor != null)
                message.actor = object.actor | 0;
            if (object.joinTime != null)
                if ($util.Long)
                    (message.joinTime = $util.Long.fromValue(object.joinTime)).unsigned = false;
                else if (typeof object.joinTime === "string")
                    message.joinTime = parseInt(object.joinTime, 10);
                else if (typeof object.joinTime === "number")
                    message.joinTime = object.joinTime;
                else if (typeof object.joinTime === "object")
                    message.joinTime = new $util.LongBits(object.joinTime.low >>> 0, object.joinTime.high >>> 0).toNumber();
            if (object.approver != null)
                message.approver = object.approver | 0;
            if (object.usercount != null)
                message.usercount = object.usercount | 0;
            if (object.headimg != null)
                message.headimg = String(object.headimg);
            if (object.nickName != null)
                message.nickName = String(object.nickName);
            if (object.sex != null)
                message.sex = object.sex | 0;
            if (object.userState != null)
                message.userState = object.userState | 0;
            return message;
        };

        /**
         * Creates a plain object from a ClubInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {JhaoProto.ClubInfo} message ClubInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ClubInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.clubid = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.creator = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.creator = options.longs === String ? "0" : 0;
                object.clubName = "";
                object.notice = "";
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.createTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.createTime = options.longs === String ? "0" : 0;
                object.clubState = 0;
                object.actor = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.joinTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.joinTime = options.longs === String ? "0" : 0;
                object.approver = 0;
                object.usercount = 0;
                object.headimg = "";
                object.nickName = "";
                object.sex = 0;
                object.userState = 0;
            }
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.creator != null && message.hasOwnProperty("creator"))
                if (typeof message.creator === "number")
                    object.creator = options.longs === String ? String(message.creator) : message.creator;
                else
                    object.creator = options.longs === String ? $util.Long.prototype.toString.call(message.creator) : options.longs === Number ? new $util.LongBits(message.creator.low >>> 0, message.creator.high >>> 0).toNumber() : message.creator;
            if (message.clubName != null && message.hasOwnProperty("clubName"))
                object.clubName = message.clubName;
            if (message.notice != null && message.hasOwnProperty("notice"))
                object.notice = message.notice;
            if (message.createTime != null && message.hasOwnProperty("createTime"))
                if (typeof message.createTime === "number")
                    object.createTime = options.longs === String ? String(message.createTime) : message.createTime;
                else
                    object.createTime = options.longs === String ? $util.Long.prototype.toString.call(message.createTime) : options.longs === Number ? new $util.LongBits(message.createTime.low >>> 0, message.createTime.high >>> 0).toNumber() : message.createTime;
            if (message.clubState != null && message.hasOwnProperty("clubState"))
                object.clubState = message.clubState;
            if (message.actor != null && message.hasOwnProperty("actor"))
                object.actor = message.actor;
            if (message.joinTime != null && message.hasOwnProperty("joinTime"))
                if (typeof message.joinTime === "number")
                    object.joinTime = options.longs === String ? String(message.joinTime) : message.joinTime;
                else
                    object.joinTime = options.longs === String ? $util.Long.prototype.toString.call(message.joinTime) : options.longs === Number ? new $util.LongBits(message.joinTime.low >>> 0, message.joinTime.high >>> 0).toNumber() : message.joinTime;
            if (message.approver != null && message.hasOwnProperty("approver"))
                object.approver = message.approver;
            if (message.usercount != null && message.hasOwnProperty("usercount"))
                object.usercount = message.usercount;
            if (message.headimg != null && message.hasOwnProperty("headimg"))
                object.headimg = message.headimg;
            if (message.nickName != null && message.hasOwnProperty("nickName"))
                object.nickName = message.nickName;
            if (message.sex != null && message.hasOwnProperty("sex"))
                object.sex = message.sex;
            if (message.userState != null && message.hasOwnProperty("userState"))
                object.userState = message.userState;
            return object;
        };

        /**
         * Converts this ClubInfo to JSON.
         * @function toJSON
         * @memberof JhaoProto.ClubInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ClubInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ClubInfo
         * @function getTypeUrl
         * @memberof JhaoProto.ClubInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ClubInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.ClubInfo";
        };

        return ClubInfo;
    })();

    JhaoProto.Club_User = (function() {

        /**
         * Properties of a Club_User.
         * @memberof JhaoProto
         * @interface IClub_User
         * @property {number|null} [id] Club_User id
         * @property {number|null} [clubid] Club_User clubid
         * @property {number|Long|null} [userid] Club_User userid
         * @property {number|null} [userState] Club_User userState
         * @property {number|null} [actor] Club_User actor
         * @property {number|Long|null} [joinTime] Club_User joinTime
         * @property {number|null} [approver] Club_User approver
         * @property {number|Long|null} [score] Club_User score
         * @property {string|null} [headimgurl] Club_User headimgurl
         * @property {string|null} [nickName] Club_User nickName
         */

        /**
         * Constructs a new Club_User.
         * @memberof JhaoProto
         * @classdesc Represents a Club_User.
         * @implements IClub_User
         * @constructor
         * @param {JhaoProto.IClub_User=} [properties] Properties to set
         */
        function Club_User(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Club_User id.
         * @member {number} id
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.id = 0;

        /**
         * Club_User clubid.
         * @member {number} clubid
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.clubid = 0;

        /**
         * Club_User userid.
         * @member {number|Long} userid
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.userid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Club_User userState.
         * @member {number} userState
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.userState = 0;

        /**
         * Club_User actor.
         * @member {number} actor
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.actor = 0;

        /**
         * Club_User joinTime.
         * @member {number|Long} joinTime
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.joinTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Club_User approver.
         * @member {number} approver
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.approver = 0;

        /**
         * Club_User score.
         * @member {number|Long} score
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.score = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Club_User headimgurl.
         * @member {string} headimgurl
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.headimgurl = "";

        /**
         * Club_User nickName.
         * @member {string} nickName
         * @memberof JhaoProto.Club_User
         * @instance
         */
        Club_User.prototype.nickName = "";

        /**
         * Creates a new Club_User instance using the specified properties.
         * @function create
         * @memberof JhaoProto.Club_User
         * @static
         * @param {JhaoProto.IClub_User=} [properties] Properties to set
         * @returns {JhaoProto.Club_User} Club_User instance
         */
        Club_User.create = function create(properties) {
            return new Club_User(properties);
        };

        /**
         * Encodes the specified Club_User message. Does not implicitly {@link JhaoProto.Club_User.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.Club_User
         * @static
         * @param {JhaoProto.IClub_User} message Club_User message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        Club_User.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id);
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.clubid);
            if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                writer.uint32(/* id 3, wireType 0 =*/24).int64(message.userid);
            if (message.userState != null && Object.hasOwnProperty.call(message, "userState"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.userState);
            if (message.actor != null && Object.hasOwnProperty.call(message, "actor"))
                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.actor);
            if (message.joinTime != null && Object.hasOwnProperty.call(message, "joinTime"))
                writer.uint32(/* id 6, wireType 0 =*/48).int64(message.joinTime);
            if (message.approver != null && Object.hasOwnProperty.call(message, "approver"))
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.approver);
            if (message.score != null && Object.hasOwnProperty.call(message, "score"))
                writer.uint32(/* id 8, wireType 0 =*/64).int64(message.score);
            if (message.headimgurl != null && Object.hasOwnProperty.call(message, "headimgurl"))
                writer.uint32(/* id 9, wireType 2 =*/74).string(message.headimgurl);
            if (message.nickName != null && Object.hasOwnProperty.call(message, "nickName"))
                writer.uint32(/* id 10, wireType 2 =*/82).string(message.nickName);
            return writer;
        };

        /**
         * Encodes the specified Club_User message, length delimited. Does not implicitly {@link JhaoProto.Club_User.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.Club_User
         * @static
         * @param {JhaoProto.IClub_User} message Club_User message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        Club_User.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a Club_User message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.Club_User
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.Club_User} Club_User
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Club_User.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.Club_User();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.id = reader.int32();
                        break;
                    }
                case 2: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 3: {
                        message.userid = reader.int64();
                        break;
                    }
                case 4: {
                        message.userState = reader.int32();
                        break;
                    }
                case 5: {
                        message.actor = reader.int32();
                        break;
                    }
                case 6: {
                        message.joinTime = reader.int64();
                        break;
                    }
                case 7: {
                        message.approver = reader.int32();
                        break;
                    }
                case 8: {
                        message.score = reader.int64();
                        break;
                    }
                case 9: {
                        message.headimgurl = reader.string();
                        break;
                    }
                case 10: {
                        message.nickName = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a Club_User message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.Club_User
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.Club_User} Club_User
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Club_User.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a Club_User message.
         * @function verify
         * @memberof JhaoProto.Club_User
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        Club_User.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.id != null && message.hasOwnProperty("id"))
                if (!$util.isInteger(message.id))
                    return "id: integer expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (!$util.isInteger(message.userid) && !(message.userid && $util.isInteger(message.userid.low) && $util.isInteger(message.userid.high)))
                    return "userid: integer|Long expected";
            if (message.userState != null && message.hasOwnProperty("userState"))
                if (!$util.isInteger(message.userState))
                    return "userState: integer expected";
            if (message.actor != null && message.hasOwnProperty("actor"))
                if (!$util.isInteger(message.actor))
                    return "actor: integer expected";
            if (message.joinTime != null && message.hasOwnProperty("joinTime"))
                if (!$util.isInteger(message.joinTime) && !(message.joinTime && $util.isInteger(message.joinTime.low) && $util.isInteger(message.joinTime.high)))
                    return "joinTime: integer|Long expected";
            if (message.approver != null && message.hasOwnProperty("approver"))
                if (!$util.isInteger(message.approver))
                    return "approver: integer expected";
            if (message.score != null && message.hasOwnProperty("score"))
                if (!$util.isInteger(message.score) && !(message.score && $util.isInteger(message.score.low) && $util.isInteger(message.score.high)))
                    return "score: integer|Long expected";
            if (message.headimgurl != null && message.hasOwnProperty("headimgurl"))
                if (!$util.isString(message.headimgurl))
                    return "headimgurl: string expected";
            if (message.nickName != null && message.hasOwnProperty("nickName"))
                if (!$util.isString(message.nickName))
                    return "nickName: string expected";
            return null;
        };

        /**
         * Creates a Club_User message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.Club_User
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.Club_User} Club_User
         */
        Club_User.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.Club_User)
                return object;
            var message = new $root.JhaoProto.Club_User();
            if (object.id != null)
                message.id = object.id | 0;
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.userid != null)
                if ($util.Long)
                    (message.userid = $util.Long.fromValue(object.userid)).unsigned = false;
                else if (typeof object.userid === "string")
                    message.userid = parseInt(object.userid, 10);
                else if (typeof object.userid === "number")
                    message.userid = object.userid;
                else if (typeof object.userid === "object")
                    message.userid = new $util.LongBits(object.userid.low >>> 0, object.userid.high >>> 0).toNumber();
            if (object.userState != null)
                message.userState = object.userState | 0;
            if (object.actor != null)
                message.actor = object.actor | 0;
            if (object.joinTime != null)
                if ($util.Long)
                    (message.joinTime = $util.Long.fromValue(object.joinTime)).unsigned = false;
                else if (typeof object.joinTime === "string")
                    message.joinTime = parseInt(object.joinTime, 10);
                else if (typeof object.joinTime === "number")
                    message.joinTime = object.joinTime;
                else if (typeof object.joinTime === "object")
                    message.joinTime = new $util.LongBits(object.joinTime.low >>> 0, object.joinTime.high >>> 0).toNumber();
            if (object.approver != null)
                message.approver = object.approver | 0;
            if (object.score != null)
                if ($util.Long)
                    (message.score = $util.Long.fromValue(object.score)).unsigned = false;
                else if (typeof object.score === "string")
                    message.score = parseInt(object.score, 10);
                else if (typeof object.score === "number")
                    message.score = object.score;
                else if (typeof object.score === "object")
                    message.score = new $util.LongBits(object.score.low >>> 0, object.score.high >>> 0).toNumber();
            if (object.headimgurl != null)
                message.headimgurl = String(object.headimgurl);
            if (object.nickName != null)
                message.nickName = String(object.nickName);
            return message;
        };

        /**
         * Creates a plain object from a Club_User message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.Club_User
         * @static
         * @param {JhaoProto.Club_User} message Club_User
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        Club_User.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.id = 0;
                object.clubid = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userid = options.longs === String ? "0" : 0;
                object.userState = 0;
                object.actor = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.joinTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.joinTime = options.longs === String ? "0" : 0;
                object.approver = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.score = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.score = options.longs === String ? "0" : 0;
                object.headimgurl = "";
                object.nickName = "";
            }
            if (message.id != null && message.hasOwnProperty("id"))
                object.id = message.id;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (typeof message.userid === "number")
                    object.userid = options.longs === String ? String(message.userid) : message.userid;
                else
                    object.userid = options.longs === String ? $util.Long.prototype.toString.call(message.userid) : options.longs === Number ? new $util.LongBits(message.userid.low >>> 0, message.userid.high >>> 0).toNumber() : message.userid;
            if (message.userState != null && message.hasOwnProperty("userState"))
                object.userState = message.userState;
            if (message.actor != null && message.hasOwnProperty("actor"))
                object.actor = message.actor;
            if (message.joinTime != null && message.hasOwnProperty("joinTime"))
                if (typeof message.joinTime === "number")
                    object.joinTime = options.longs === String ? String(message.joinTime) : message.joinTime;
                else
                    object.joinTime = options.longs === String ? $util.Long.prototype.toString.call(message.joinTime) : options.longs === Number ? new $util.LongBits(message.joinTime.low >>> 0, message.joinTime.high >>> 0).toNumber() : message.joinTime;
            if (message.approver != null && message.hasOwnProperty("approver"))
                object.approver = message.approver;
            if (message.score != null && message.hasOwnProperty("score"))
                if (typeof message.score === "number")
                    object.score = options.longs === String ? String(message.score) : message.score;
                else
                    object.score = options.longs === String ? $util.Long.prototype.toString.call(message.score) : options.longs === Number ? new $util.LongBits(message.score.low >>> 0, message.score.high >>> 0).toNumber() : message.score;
            if (message.headimgurl != null && message.hasOwnProperty("headimgurl"))
                object.headimgurl = message.headimgurl;
            if (message.nickName != null && message.hasOwnProperty("nickName"))
                object.nickName = message.nickName;
            return object;
        };

        /**
         * Converts this Club_User to JSON.
         * @function toJSON
         * @memberof JhaoProto.Club_User
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        Club_User.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for Club_User
         * @function getTypeUrl
         * @memberof JhaoProto.Club_User
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        Club_User.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.Club_User";
        };

        return Club_User;
    })();

    JhaoProto.RoomConfigBase = (function() {

        /**
         * Properties of a RoomConfigBase.
         * @memberof JhaoProto
         * @interface IRoomConfigBase
         * @property {string|null} [name] RoomConfigBase name
         * @property {number|null} [renshu] RoomConfigBase renshu
         * @property {number|null} [jushu] RoomConfigBase jushu
         * @property {number|null} [cost] RoomConfigBase cost
         * @property {number|null} [costType] RoomConfigBase costType
         * @property {number|null} [difen] RoomConfigBase difen
         * @property {number|null} [distanceLimit] RoomConfigBase distanceLimit
         * @property {number|null} [dismissTime] RoomConfigBase dismissTime
         * @property {number|null} [tuoguanTime] RoomConfigBase tuoguanTime
         * @property {number|null} [limitEmoji] RoomConfigBase limitEmoji
         * @property {number|null} [limitVoice] RoomConfigBase limitVoice
         * @property {number|null} [limitDropItem] RoomConfigBase limitDropItem
         */

        /**
         * Constructs a new RoomConfigBase.
         * @memberof JhaoProto
         * @classdesc Represents a RoomConfigBase.
         * @implements IRoomConfigBase
         * @constructor
         * @param {JhaoProto.IRoomConfigBase=} [properties] Properties to set
         */
        function RoomConfigBase(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RoomConfigBase name.
         * @member {string} name
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.name = "";

        /**
         * RoomConfigBase renshu.
         * @member {number} renshu
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.renshu = 0;

        /**
         * RoomConfigBase jushu.
         * @member {number} jushu
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.jushu = 0;

        /**
         * RoomConfigBase cost.
         * @member {number} cost
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.cost = 0;

        /**
         * RoomConfigBase costType.
         * @member {number} costType
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.costType = 0;

        /**
         * RoomConfigBase difen.
         * @member {number} difen
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.difen = 0;

        /**
         * RoomConfigBase distanceLimit.
         * @member {number} distanceLimit
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.distanceLimit = 0;

        /**
         * RoomConfigBase dismissTime.
         * @member {number} dismissTime
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.dismissTime = 0;

        /**
         * RoomConfigBase tuoguanTime.
         * @member {number} tuoguanTime
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.tuoguanTime = 0;

        /**
         * RoomConfigBase limitEmoji.
         * @member {number} limitEmoji
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.limitEmoji = 0;

        /**
         * RoomConfigBase limitVoice.
         * @member {number} limitVoice
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.limitVoice = 0;

        /**
         * RoomConfigBase limitDropItem.
         * @member {number} limitDropItem
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         */
        RoomConfigBase.prototype.limitDropItem = 0;

        /**
         * Creates a new RoomConfigBase instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {JhaoProto.IRoomConfigBase=} [properties] Properties to set
         * @returns {JhaoProto.RoomConfigBase} RoomConfigBase instance
         */
        RoomConfigBase.create = function create(properties) {
            return new RoomConfigBase(properties);
        };

        /**
         * Encodes the specified RoomConfigBase message. Does not implicitly {@link JhaoProto.RoomConfigBase.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {JhaoProto.IRoomConfigBase} message RoomConfigBase message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomConfigBase.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
            if (message.renshu != null && Object.hasOwnProperty.call(message, "renshu"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.renshu);
            if (message.jushu != null && Object.hasOwnProperty.call(message, "jushu"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.jushu);
            if (message.cost != null && Object.hasOwnProperty.call(message, "cost"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.cost);
            if (message.costType != null && Object.hasOwnProperty.call(message, "costType"))
                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.costType);
            if (message.difen != null && Object.hasOwnProperty.call(message, "difen"))
                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.difen);
            if (message.distanceLimit != null && Object.hasOwnProperty.call(message, "distanceLimit"))
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.distanceLimit);
            if (message.dismissTime != null && Object.hasOwnProperty.call(message, "dismissTime"))
                writer.uint32(/* id 8, wireType 0 =*/64).int32(message.dismissTime);
            if (message.tuoguanTime != null && Object.hasOwnProperty.call(message, "tuoguanTime"))
                writer.uint32(/* id 9, wireType 0 =*/72).int32(message.tuoguanTime);
            if (message.limitEmoji != null && Object.hasOwnProperty.call(message, "limitEmoji"))
                writer.uint32(/* id 10, wireType 0 =*/80).int32(message.limitEmoji);
            if (message.limitVoice != null && Object.hasOwnProperty.call(message, "limitVoice"))
                writer.uint32(/* id 11, wireType 0 =*/88).int32(message.limitVoice);
            if (message.limitDropItem != null && Object.hasOwnProperty.call(message, "limitDropItem"))
                writer.uint32(/* id 12, wireType 0 =*/96).int32(message.limitDropItem);
            return writer;
        };

        /**
         * Encodes the specified RoomConfigBase message, length delimited. Does not implicitly {@link JhaoProto.RoomConfigBase.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {JhaoProto.IRoomConfigBase} message RoomConfigBase message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomConfigBase.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoomConfigBase message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RoomConfigBase} RoomConfigBase
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomConfigBase.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RoomConfigBase();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.name = reader.string();
                        break;
                    }
                case 2: {
                        message.renshu = reader.int32();
                        break;
                    }
                case 3: {
                        message.jushu = reader.int32();
                        break;
                    }
                case 4: {
                        message.cost = reader.int32();
                        break;
                    }
                case 5: {
                        message.costType = reader.int32();
                        break;
                    }
                case 6: {
                        message.difen = reader.int32();
                        break;
                    }
                case 7: {
                        message.distanceLimit = reader.int32();
                        break;
                    }
                case 8: {
                        message.dismissTime = reader.int32();
                        break;
                    }
                case 9: {
                        message.tuoguanTime = reader.int32();
                        break;
                    }
                case 10: {
                        message.limitEmoji = reader.int32();
                        break;
                    }
                case 11: {
                        message.limitVoice = reader.int32();
                        break;
                    }
                case 12: {
                        message.limitDropItem = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoomConfigBase message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RoomConfigBase} RoomConfigBase
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomConfigBase.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoomConfigBase message.
         * @function verify
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoomConfigBase.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.name != null && message.hasOwnProperty("name"))
                if (!$util.isString(message.name))
                    return "name: string expected";
            if (message.renshu != null && message.hasOwnProperty("renshu"))
                if (!$util.isInteger(message.renshu))
                    return "renshu: integer expected";
            if (message.jushu != null && message.hasOwnProperty("jushu"))
                if (!$util.isInteger(message.jushu))
                    return "jushu: integer expected";
            if (message.cost != null && message.hasOwnProperty("cost"))
                if (!$util.isInteger(message.cost))
                    return "cost: integer expected";
            if (message.costType != null && message.hasOwnProperty("costType"))
                if (!$util.isInteger(message.costType))
                    return "costType: integer expected";
            if (message.difen != null && message.hasOwnProperty("difen"))
                if (!$util.isInteger(message.difen))
                    return "difen: integer expected";
            if (message.distanceLimit != null && message.hasOwnProperty("distanceLimit"))
                if (!$util.isInteger(message.distanceLimit))
                    return "distanceLimit: integer expected";
            if (message.dismissTime != null && message.hasOwnProperty("dismissTime"))
                if (!$util.isInteger(message.dismissTime))
                    return "dismissTime: integer expected";
            if (message.tuoguanTime != null && message.hasOwnProperty("tuoguanTime"))
                if (!$util.isInteger(message.tuoguanTime))
                    return "tuoguanTime: integer expected";
            if (message.limitEmoji != null && message.hasOwnProperty("limitEmoji"))
                if (!$util.isInteger(message.limitEmoji))
                    return "limitEmoji: integer expected";
            if (message.limitVoice != null && message.hasOwnProperty("limitVoice"))
                if (!$util.isInteger(message.limitVoice))
                    return "limitVoice: integer expected";
            if (message.limitDropItem != null && message.hasOwnProperty("limitDropItem"))
                if (!$util.isInteger(message.limitDropItem))
                    return "limitDropItem: integer expected";
            return null;
        };

        /**
         * Creates a RoomConfigBase message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RoomConfigBase} RoomConfigBase
         */
        RoomConfigBase.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RoomConfigBase)
                return object;
            var message = new $root.JhaoProto.RoomConfigBase();
            if (object.name != null)
                message.name = String(object.name);
            if (object.renshu != null)
                message.renshu = object.renshu | 0;
            if (object.jushu != null)
                message.jushu = object.jushu | 0;
            if (object.cost != null)
                message.cost = object.cost | 0;
            if (object.costType != null)
                message.costType = object.costType | 0;
            if (object.difen != null)
                message.difen = object.difen | 0;
            if (object.distanceLimit != null)
                message.distanceLimit = object.distanceLimit | 0;
            if (object.dismissTime != null)
                message.dismissTime = object.dismissTime | 0;
            if (object.tuoguanTime != null)
                message.tuoguanTime = object.tuoguanTime | 0;
            if (object.limitEmoji != null)
                message.limitEmoji = object.limitEmoji | 0;
            if (object.limitVoice != null)
                message.limitVoice = object.limitVoice | 0;
            if (object.limitDropItem != null)
                message.limitDropItem = object.limitDropItem | 0;
            return message;
        };

        /**
         * Creates a plain object from a RoomConfigBase message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {JhaoProto.RoomConfigBase} message RoomConfigBase
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoomConfigBase.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.name = "";
                object.renshu = 0;
                object.jushu = 0;
                object.cost = 0;
                object.costType = 0;
                object.difen = 0;
                object.distanceLimit = 0;
                object.dismissTime = 0;
                object.tuoguanTime = 0;
                object.limitEmoji = 0;
                object.limitVoice = 0;
                object.limitDropItem = 0;
            }
            if (message.name != null && message.hasOwnProperty("name"))
                object.name = message.name;
            if (message.renshu != null && message.hasOwnProperty("renshu"))
                object.renshu = message.renshu;
            if (message.jushu != null && message.hasOwnProperty("jushu"))
                object.jushu = message.jushu;
            if (message.cost != null && message.hasOwnProperty("cost"))
                object.cost = message.cost;
            if (message.costType != null && message.hasOwnProperty("costType"))
                object.costType = message.costType;
            if (message.difen != null && message.hasOwnProperty("difen"))
                object.difen = message.difen;
            if (message.distanceLimit != null && message.hasOwnProperty("distanceLimit"))
                object.distanceLimit = message.distanceLimit;
            if (message.dismissTime != null && message.hasOwnProperty("dismissTime"))
                object.dismissTime = message.dismissTime;
            if (message.tuoguanTime != null && message.hasOwnProperty("tuoguanTime"))
                object.tuoguanTime = message.tuoguanTime;
            if (message.limitEmoji != null && message.hasOwnProperty("limitEmoji"))
                object.limitEmoji = message.limitEmoji;
            if (message.limitVoice != null && message.hasOwnProperty("limitVoice"))
                object.limitVoice = message.limitVoice;
            if (message.limitDropItem != null && message.hasOwnProperty("limitDropItem"))
                object.limitDropItem = message.limitDropItem;
            return object;
        };

        /**
         * Converts this RoomConfigBase to JSON.
         * @function toJSON
         * @memberof JhaoProto.RoomConfigBase
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoomConfigBase.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoomConfigBase
         * @function getTypeUrl
         * @memberof JhaoProto.RoomConfigBase
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoomConfigBase.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RoomConfigBase";
        };

        return RoomConfigBase;
    })();

    JhaoProto.RoomConfigMj = (function() {

        /**
         * Properties of a RoomConfigMj.
         * @memberof JhaoProto
         * @interface IRoomConfigMj
         * @property {number|null} [dianpaoType] RoomConfigMj dianpaoType
         */

        /**
         * Constructs a new RoomConfigMj.
         * @memberof JhaoProto
         * @classdesc Represents a RoomConfigMj.
         * @implements IRoomConfigMj
         * @constructor
         * @param {JhaoProto.IRoomConfigMj=} [properties] Properties to set
         */
        function RoomConfigMj(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RoomConfigMj dianpaoType.
         * @member {number} dianpaoType
         * @memberof JhaoProto.RoomConfigMj
         * @instance
         */
        RoomConfigMj.prototype.dianpaoType = 0;

        /**
         * Creates a new RoomConfigMj instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {JhaoProto.IRoomConfigMj=} [properties] Properties to set
         * @returns {JhaoProto.RoomConfigMj} RoomConfigMj instance
         */
        RoomConfigMj.create = function create(properties) {
            return new RoomConfigMj(properties);
        };

        /**
         * Encodes the specified RoomConfigMj message. Does not implicitly {@link JhaoProto.RoomConfigMj.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {JhaoProto.IRoomConfigMj} message RoomConfigMj message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomConfigMj.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.dianpaoType != null && Object.hasOwnProperty.call(message, "dianpaoType"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.dianpaoType);
            return writer;
        };

        /**
         * Encodes the specified RoomConfigMj message, length delimited. Does not implicitly {@link JhaoProto.RoomConfigMj.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {JhaoProto.IRoomConfigMj} message RoomConfigMj message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomConfigMj.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoomConfigMj message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RoomConfigMj} RoomConfigMj
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomConfigMj.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RoomConfigMj();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.dianpaoType = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoomConfigMj message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RoomConfigMj} RoomConfigMj
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomConfigMj.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoomConfigMj message.
         * @function verify
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoomConfigMj.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.dianpaoType != null && message.hasOwnProperty("dianpaoType"))
                if (!$util.isInteger(message.dianpaoType))
                    return "dianpaoType: integer expected";
            return null;
        };

        /**
         * Creates a RoomConfigMj message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RoomConfigMj} RoomConfigMj
         */
        RoomConfigMj.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RoomConfigMj)
                return object;
            var message = new $root.JhaoProto.RoomConfigMj();
            if (object.dianpaoType != null)
                message.dianpaoType = object.dianpaoType | 0;
            return message;
        };

        /**
         * Creates a plain object from a RoomConfigMj message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {JhaoProto.RoomConfigMj} message RoomConfigMj
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoomConfigMj.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.dianpaoType = 0;
            if (message.dianpaoType != null && message.hasOwnProperty("dianpaoType"))
                object.dianpaoType = message.dianpaoType;
            return object;
        };

        /**
         * Converts this RoomConfigMj to JSON.
         * @function toJSON
         * @memberof JhaoProto.RoomConfigMj
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoomConfigMj.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoomConfigMj
         * @function getTypeUrl
         * @memberof JhaoProto.RoomConfigMj
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoomConfigMj.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RoomConfigMj";
        };

        return RoomConfigMj;
    })();

    JhaoProto.RoomTemplate = (function() {

        /**
         * Properties of a RoomTemplate.
         * @memberof JhaoProto
         * @interface IRoomTemplate
         * @property {number|null} [id] RoomTemplate id
         * @property {string|null} [name] RoomTemplate name
         * @property {number|null} [gameType] RoomTemplate gameType
         * @property {number|null} [clubid] RoomTemplate clubid
         * @property {number|Long|null} [creator] RoomTemplate creator
         * @property {number|null} [roomType] RoomTemplate roomType
         * @property {JhaoProto.IRoomConfigBase|null} [roomConfigBase] RoomTemplate roomConfigBase
         * @property {JhaoProto.IRoomConfigMj|null} [roomConfigMj] RoomTemplate roomConfigMj
         */

        /**
         * Constructs a new RoomTemplate.
         * @memberof JhaoProto
         * @classdesc Represents a RoomTemplate.
         * @implements IRoomTemplate
         * @constructor
         * @param {JhaoProto.IRoomTemplate=} [properties] Properties to set
         */
        function RoomTemplate(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RoomTemplate id.
         * @member {number} id
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.id = 0;

        /**
         * RoomTemplate name.
         * @member {string} name
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.name = "";

        /**
         * RoomTemplate gameType.
         * @member {number} gameType
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.gameType = 0;

        /**
         * RoomTemplate clubid.
         * @member {number} clubid
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.clubid = 0;

        /**
         * RoomTemplate creator.
         * @member {number|Long} creator
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.creator = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * RoomTemplate roomType.
         * @member {number} roomType
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.roomType = 0;

        /**
         * RoomTemplate roomConfigBase.
         * @member {JhaoProto.IRoomConfigBase|null|undefined} roomConfigBase
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.roomConfigBase = null;

        /**
         * RoomTemplate roomConfigMj.
         * @member {JhaoProto.IRoomConfigMj|null|undefined} roomConfigMj
         * @memberof JhaoProto.RoomTemplate
         * @instance
         */
        RoomTemplate.prototype.roomConfigMj = null;

        /**
         * Creates a new RoomTemplate instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {JhaoProto.IRoomTemplate=} [properties] Properties to set
         * @returns {JhaoProto.RoomTemplate} RoomTemplate instance
         */
        RoomTemplate.create = function create(properties) {
            return new RoomTemplate(properties);
        };

        /**
         * Encodes the specified RoomTemplate message. Does not implicitly {@link JhaoProto.RoomTemplate.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {JhaoProto.IRoomTemplate} message RoomTemplate message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomTemplate.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id);
            if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.name);
            if (message.gameType != null && Object.hasOwnProperty.call(message, "gameType"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.gameType);
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.clubid);
            if (message.creator != null && Object.hasOwnProperty.call(message, "creator"))
                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.creator);
            if (message.roomType != null && Object.hasOwnProperty.call(message, "roomType"))
                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.roomType);
            if (message.roomConfigBase != null && Object.hasOwnProperty.call(message, "roomConfigBase"))
                $root.JhaoProto.RoomConfigBase.encode(message.roomConfigBase, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
            if (message.roomConfigMj != null && Object.hasOwnProperty.call(message, "roomConfigMj"))
                $root.JhaoProto.RoomConfigMj.encode(message.roomConfigMj, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified RoomTemplate message, length delimited. Does not implicitly {@link JhaoProto.RoomTemplate.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {JhaoProto.IRoomTemplate} message RoomTemplate message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomTemplate.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoomTemplate message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RoomTemplate} RoomTemplate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomTemplate.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RoomTemplate();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.id = reader.int32();
                        break;
                    }
                case 2: {
                        message.name = reader.string();
                        break;
                    }
                case 3: {
                        message.gameType = reader.int32();
                        break;
                    }
                case 4: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 5: {
                        message.creator = reader.int64();
                        break;
                    }
                case 6: {
                        message.roomType = reader.int32();
                        break;
                    }
                case 7: {
                        message.roomConfigBase = $root.JhaoProto.RoomConfigBase.decode(reader, reader.uint32());
                        break;
                    }
                case 8: {
                        message.roomConfigMj = $root.JhaoProto.RoomConfigMj.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoomTemplate message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RoomTemplate} RoomTemplate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomTemplate.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoomTemplate message.
         * @function verify
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoomTemplate.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.id != null && message.hasOwnProperty("id"))
                if (!$util.isInteger(message.id))
                    return "id: integer expected";
            if (message.name != null && message.hasOwnProperty("name"))
                if (!$util.isString(message.name))
                    return "name: string expected";
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                if (!$util.isInteger(message.gameType))
                    return "gameType: integer expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.creator != null && message.hasOwnProperty("creator"))
                if (!$util.isInteger(message.creator) && !(message.creator && $util.isInteger(message.creator.low) && $util.isInteger(message.creator.high)))
                    return "creator: integer|Long expected";
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                if (!$util.isInteger(message.roomType))
                    return "roomType: integer expected";
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase")) {
                var error = $root.JhaoProto.RoomConfigBase.verify(message.roomConfigBase);
                if (error)
                    return "roomConfigBase." + error;
            }
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj")) {
                var error = $root.JhaoProto.RoomConfigMj.verify(message.roomConfigMj);
                if (error)
                    return "roomConfigMj." + error;
            }
            return null;
        };

        /**
         * Creates a RoomTemplate message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RoomTemplate} RoomTemplate
         */
        RoomTemplate.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RoomTemplate)
                return object;
            var message = new $root.JhaoProto.RoomTemplate();
            if (object.id != null)
                message.id = object.id | 0;
            if (object.name != null)
                message.name = String(object.name);
            if (object.gameType != null)
                message.gameType = object.gameType | 0;
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.creator != null)
                if ($util.Long)
                    (message.creator = $util.Long.fromValue(object.creator)).unsigned = false;
                else if (typeof object.creator === "string")
                    message.creator = parseInt(object.creator, 10);
                else if (typeof object.creator === "number")
                    message.creator = object.creator;
                else if (typeof object.creator === "object")
                    message.creator = new $util.LongBits(object.creator.low >>> 0, object.creator.high >>> 0).toNumber();
            if (object.roomType != null)
                message.roomType = object.roomType | 0;
            if (object.roomConfigBase != null) {
                if (typeof object.roomConfigBase !== "object")
                    throw TypeError(".JhaoProto.RoomTemplate.roomConfigBase: object expected");
                message.roomConfigBase = $root.JhaoProto.RoomConfigBase.fromObject(object.roomConfigBase);
            }
            if (object.roomConfigMj != null) {
                if (typeof object.roomConfigMj !== "object")
                    throw TypeError(".JhaoProto.RoomTemplate.roomConfigMj: object expected");
                message.roomConfigMj = $root.JhaoProto.RoomConfigMj.fromObject(object.roomConfigMj);
            }
            return message;
        };

        /**
         * Creates a plain object from a RoomTemplate message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {JhaoProto.RoomTemplate} message RoomTemplate
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoomTemplate.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.id = 0;
                object.name = "";
                object.gameType = 0;
                object.clubid = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.creator = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.creator = options.longs === String ? "0" : 0;
                object.roomType = 0;
                object.roomConfigBase = null;
                object.roomConfigMj = null;
            }
            if (message.id != null && message.hasOwnProperty("id"))
                object.id = message.id;
            if (message.name != null && message.hasOwnProperty("name"))
                object.name = message.name;
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                object.gameType = message.gameType;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.creator != null && message.hasOwnProperty("creator"))
                if (typeof message.creator === "number")
                    object.creator = options.longs === String ? String(message.creator) : message.creator;
                else
                    object.creator = options.longs === String ? $util.Long.prototype.toString.call(message.creator) : options.longs === Number ? new $util.LongBits(message.creator.low >>> 0, message.creator.high >>> 0).toNumber() : message.creator;
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                object.roomType = message.roomType;
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase"))
                object.roomConfigBase = $root.JhaoProto.RoomConfigBase.toObject(message.roomConfigBase, options);
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj"))
                object.roomConfigMj = $root.JhaoProto.RoomConfigMj.toObject(message.roomConfigMj, options);
            return object;
        };

        /**
         * Converts this RoomTemplate to JSON.
         * @function toJSON
         * @memberof JhaoProto.RoomTemplate
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoomTemplate.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoomTemplate
         * @function getTypeUrl
         * @memberof JhaoProto.RoomTemplate
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoomTemplate.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RoomTemplate";
        };

        return RoomTemplate;
    })();

    JhaoProto.RoomPlayer = (function() {

        /**
         * Properties of a RoomPlayer.
         * @memberof JhaoProto
         * @interface IRoomPlayer
         * @property {number|Long|null} [userid] RoomPlayer userid
         * @property {string|null} [nickName] RoomPlayer nickName
         * @property {string|null} [headimgurl] RoomPlayer headimgurl
         * @property {number|null} [sex] RoomPlayer sex
         * @property {number|Long|null} [score] RoomPlayer score
         * @property {number|null} [chair] RoomPlayer chair
         * @property {boolean|null} [isReady] RoomPlayer isReady
         * @property {boolean|null} [isOnline] RoomPlayer isOnline
         */

        /**
         * Constructs a new RoomPlayer.
         * @memberof JhaoProto
         * @classdesc Represents a RoomPlayer.
         * @implements IRoomPlayer
         * @constructor
         * @param {JhaoProto.IRoomPlayer=} [properties] Properties to set
         */
        function RoomPlayer(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RoomPlayer userid.
         * @member {number|Long} userid
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.userid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * RoomPlayer nickName.
         * @member {string} nickName
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.nickName = "";

        /**
         * RoomPlayer headimgurl.
         * @member {string} headimgurl
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.headimgurl = "";

        /**
         * RoomPlayer sex.
         * @member {number} sex
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.sex = 0;

        /**
         * RoomPlayer score.
         * @member {number|Long} score
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.score = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * RoomPlayer chair.
         * @member {number} chair
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.chair = 0;

        /**
         * RoomPlayer isReady.
         * @member {boolean} isReady
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.isReady = false;

        /**
         * RoomPlayer isOnline.
         * @member {boolean} isOnline
         * @memberof JhaoProto.RoomPlayer
         * @instance
         */
        RoomPlayer.prototype.isOnline = false;

        /**
         * Creates a new RoomPlayer instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {JhaoProto.IRoomPlayer=} [properties] Properties to set
         * @returns {JhaoProto.RoomPlayer} RoomPlayer instance
         */
        RoomPlayer.create = function create(properties) {
            return new RoomPlayer(properties);
        };

        /**
         * Encodes the specified RoomPlayer message. Does not implicitly {@link JhaoProto.RoomPlayer.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {JhaoProto.IRoomPlayer} message RoomPlayer message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomPlayer.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int64(message.userid);
            if (message.nickName != null && Object.hasOwnProperty.call(message, "nickName"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.nickName);
            if (message.headimgurl != null && Object.hasOwnProperty.call(message, "headimgurl"))
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.headimgurl);
            if (message.sex != null && Object.hasOwnProperty.call(message, "sex"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.sex);
            if (message.score != null && Object.hasOwnProperty.call(message, "score"))
                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.score);
            if (message.chair != null && Object.hasOwnProperty.call(message, "chair"))
                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.chair);
            if (message.isReady != null && Object.hasOwnProperty.call(message, "isReady"))
                writer.uint32(/* id 7, wireType 0 =*/56).bool(message.isReady);
            if (message.isOnline != null && Object.hasOwnProperty.call(message, "isOnline"))
                writer.uint32(/* id 8, wireType 0 =*/64).bool(message.isOnline);
            return writer;
        };

        /**
         * Encodes the specified RoomPlayer message, length delimited. Does not implicitly {@link JhaoProto.RoomPlayer.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {JhaoProto.IRoomPlayer} message RoomPlayer message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomPlayer.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoomPlayer message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RoomPlayer} RoomPlayer
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomPlayer.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RoomPlayer();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.userid = reader.int64();
                        break;
                    }
                case 2: {
                        message.nickName = reader.string();
                        break;
                    }
                case 3: {
                        message.headimgurl = reader.string();
                        break;
                    }
                case 4: {
                        message.sex = reader.int32();
                        break;
                    }
                case 5: {
                        message.score = reader.int64();
                        break;
                    }
                case 6: {
                        message.chair = reader.int32();
                        break;
                    }
                case 7: {
                        message.isReady = reader.bool();
                        break;
                    }
                case 8: {
                        message.isOnline = reader.bool();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoomPlayer message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RoomPlayer} RoomPlayer
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomPlayer.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoomPlayer message.
         * @function verify
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoomPlayer.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (!$util.isInteger(message.userid) && !(message.userid && $util.isInteger(message.userid.low) && $util.isInteger(message.userid.high)))
                    return "userid: integer|Long expected";
            if (message.nickName != null && message.hasOwnProperty("nickName"))
                if (!$util.isString(message.nickName))
                    return "nickName: string expected";
            if (message.headimgurl != null && message.hasOwnProperty("headimgurl"))
                if (!$util.isString(message.headimgurl))
                    return "headimgurl: string expected";
            if (message.sex != null && message.hasOwnProperty("sex"))
                if (!$util.isInteger(message.sex))
                    return "sex: integer expected";
            if (message.score != null && message.hasOwnProperty("score"))
                if (!$util.isInteger(message.score) && !(message.score && $util.isInteger(message.score.low) && $util.isInteger(message.score.high)))
                    return "score: integer|Long expected";
            if (message.chair != null && message.hasOwnProperty("chair"))
                if (!$util.isInteger(message.chair))
                    return "chair: integer expected";
            if (message.isReady != null && message.hasOwnProperty("isReady"))
                if (typeof message.isReady !== "boolean")
                    return "isReady: boolean expected";
            if (message.isOnline != null && message.hasOwnProperty("isOnline"))
                if (typeof message.isOnline !== "boolean")
                    return "isOnline: boolean expected";
            return null;
        };

        /**
         * Creates a RoomPlayer message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RoomPlayer} RoomPlayer
         */
        RoomPlayer.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RoomPlayer)
                return object;
            var message = new $root.JhaoProto.RoomPlayer();
            if (object.userid != null)
                if ($util.Long)
                    (message.userid = $util.Long.fromValue(object.userid)).unsigned = false;
                else if (typeof object.userid === "string")
                    message.userid = parseInt(object.userid, 10);
                else if (typeof object.userid === "number")
                    message.userid = object.userid;
                else if (typeof object.userid === "object")
                    message.userid = new $util.LongBits(object.userid.low >>> 0, object.userid.high >>> 0).toNumber();
            if (object.nickName != null)
                message.nickName = String(object.nickName);
            if (object.headimgurl != null)
                message.headimgurl = String(object.headimgurl);
            if (object.sex != null)
                message.sex = object.sex | 0;
            if (object.score != null)
                if ($util.Long)
                    (message.score = $util.Long.fromValue(object.score)).unsigned = false;
                else if (typeof object.score === "string")
                    message.score = parseInt(object.score, 10);
                else if (typeof object.score === "number")
                    message.score = object.score;
                else if (typeof object.score === "object")
                    message.score = new $util.LongBits(object.score.low >>> 0, object.score.high >>> 0).toNumber();
            if (object.chair != null)
                message.chair = object.chair | 0;
            if (object.isReady != null)
                message.isReady = Boolean(object.isReady);
            if (object.isOnline != null)
                message.isOnline = Boolean(object.isOnline);
            return message;
        };

        /**
         * Creates a plain object from a RoomPlayer message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {JhaoProto.RoomPlayer} message RoomPlayer
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoomPlayer.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userid = options.longs === String ? "0" : 0;
                object.nickName = "";
                object.headimgurl = "";
                object.sex = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.score = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.score = options.longs === String ? "0" : 0;
                object.chair = 0;
                object.isReady = false;
                object.isOnline = false;
            }
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (typeof message.userid === "number")
                    object.userid = options.longs === String ? String(message.userid) : message.userid;
                else
                    object.userid = options.longs === String ? $util.Long.prototype.toString.call(message.userid) : options.longs === Number ? new $util.LongBits(message.userid.low >>> 0, message.userid.high >>> 0).toNumber() : message.userid;
            if (message.nickName != null && message.hasOwnProperty("nickName"))
                object.nickName = message.nickName;
            if (message.headimgurl != null && message.hasOwnProperty("headimgurl"))
                object.headimgurl = message.headimgurl;
            if (message.sex != null && message.hasOwnProperty("sex"))
                object.sex = message.sex;
            if (message.score != null && message.hasOwnProperty("score"))
                if (typeof message.score === "number")
                    object.score = options.longs === String ? String(message.score) : message.score;
                else
                    object.score = options.longs === String ? $util.Long.prototype.toString.call(message.score) : options.longs === Number ? new $util.LongBits(message.score.low >>> 0, message.score.high >>> 0).toNumber() : message.score;
            if (message.chair != null && message.hasOwnProperty("chair"))
                object.chair = message.chair;
            if (message.isReady != null && message.hasOwnProperty("isReady"))
                object.isReady = message.isReady;
            if (message.isOnline != null && message.hasOwnProperty("isOnline"))
                object.isOnline = message.isOnline;
            return object;
        };

        /**
         * Converts this RoomPlayer to JSON.
         * @function toJSON
         * @memberof JhaoProto.RoomPlayer
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoomPlayer.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoomPlayer
         * @function getTypeUrl
         * @memberof JhaoProto.RoomPlayer
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoomPlayer.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RoomPlayer";
        };

        return RoomPlayer;
    })();

    JhaoProto.RoomGameInfoBase = (function() {

        /**
         * Properties of a RoomGameInfoBase.
         * @memberof JhaoProto
         * @interface IRoomGameInfoBase
         * @property {number|null} [gameState] RoomGameInfoBase gameState
         * @property {number|null} [currentChair] RoomGameInfoBase currentChair
         * @property {Array.<boolean>|null} [trusteeList] RoomGameInfoBase trusteeList
         * @property {number|Long|null} [nextTurnTime] RoomGameInfoBase nextTurnTime
         * @property {number|Long|null} [applyDismissUserid] 解散发起人
         * @property {number|Long|null} [applyDismissTime] 申请时间
         * @property {Array.<number>|null} [applyDismissList] 解散状态 0:未投票 1:同意 2:拒绝
         * @property {number|Long|null} [applyDismissRefuseUserid] RoomGameInfoBase applyDismissRefuseUserid
         * @property {number|null} [lastChair] RoomGameInfoBase lastChair
         */

        /**
         * Constructs a new RoomGameInfoBase.
         * @memberof JhaoProto
         * @classdesc Represents a RoomGameInfoBase.
         * @implements IRoomGameInfoBase
         * @constructor
         * @param {JhaoProto.IRoomGameInfoBase=} [properties] Properties to set
         */
        function RoomGameInfoBase(properties) {
            this.trusteeList = [];
            this.applyDismissList = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RoomGameInfoBase gameState.
         * @member {number} gameState
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.gameState = 0;

        /**
         * RoomGameInfoBase currentChair.
         * @member {number} currentChair
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.currentChair = 0;

        /**
         * RoomGameInfoBase trusteeList.
         * @member {Array.<boolean>} trusteeList
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.trusteeList = $util.emptyArray;

        /**
         * RoomGameInfoBase nextTurnTime.
         * @member {number|Long} nextTurnTime
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.nextTurnTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * 解散发起人
         * @member {number|Long} applyDismissUserid
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.applyDismissUserid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * 申请时间
         * @member {number|Long} applyDismissTime
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.applyDismissTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * 解散状态 0:未投票 1:同意 2:拒绝
         * @member {Array.<number>} applyDismissList
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.applyDismissList = $util.emptyArray;

        /**
         * RoomGameInfoBase applyDismissRefuseUserid.
         * @member {number|Long} applyDismissRefuseUserid
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.applyDismissRefuseUserid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * RoomGameInfoBase lastChair.
         * @member {number} lastChair
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         */
        RoomGameInfoBase.prototype.lastChair = 0;

        /**
         * Creates a new RoomGameInfoBase instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {JhaoProto.IRoomGameInfoBase=} [properties] Properties to set
         * @returns {JhaoProto.RoomGameInfoBase} RoomGameInfoBase instance
         */
        RoomGameInfoBase.create = function create(properties) {
            return new RoomGameInfoBase(properties);
        };

        /**
         * Encodes the specified RoomGameInfoBase message. Does not implicitly {@link JhaoProto.RoomGameInfoBase.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {JhaoProto.IRoomGameInfoBase} message RoomGameInfoBase message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomGameInfoBase.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.gameState != null && Object.hasOwnProperty.call(message, "gameState"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.gameState);
            if (message.currentChair != null && Object.hasOwnProperty.call(message, "currentChair"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.currentChair);
            if (message.trusteeList != null && message.trusteeList.length) {
                writer.uint32(/* id 3, wireType 2 =*/26).fork();
                for (var i = 0; i < message.trusteeList.length; ++i)
                    writer.bool(message.trusteeList[i]);
                writer.ldelim();
            }
            if (message.nextTurnTime != null && Object.hasOwnProperty.call(message, "nextTurnTime"))
                writer.uint32(/* id 4, wireType 0 =*/32).int64(message.nextTurnTime);
            if (message.applyDismissUserid != null && Object.hasOwnProperty.call(message, "applyDismissUserid"))
                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.applyDismissUserid);
            if (message.applyDismissTime != null && Object.hasOwnProperty.call(message, "applyDismissTime"))
                writer.uint32(/* id 6, wireType 0 =*/48).int64(message.applyDismissTime);
            if (message.applyDismissList != null && message.applyDismissList.length) {
                writer.uint32(/* id 7, wireType 2 =*/58).fork();
                for (var i = 0; i < message.applyDismissList.length; ++i)
                    writer.int32(message.applyDismissList[i]);
                writer.ldelim();
            }
            if (message.applyDismissRefuseUserid != null && Object.hasOwnProperty.call(message, "applyDismissRefuseUserid"))
                writer.uint32(/* id 8, wireType 0 =*/64).int64(message.applyDismissRefuseUserid);
            if (message.lastChair != null && Object.hasOwnProperty.call(message, "lastChair"))
                writer.uint32(/* id 9, wireType 0 =*/72).int32(message.lastChair);
            return writer;
        };

        /**
         * Encodes the specified RoomGameInfoBase message, length delimited. Does not implicitly {@link JhaoProto.RoomGameInfoBase.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {JhaoProto.IRoomGameInfoBase} message RoomGameInfoBase message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomGameInfoBase.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoomGameInfoBase message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RoomGameInfoBase} RoomGameInfoBase
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomGameInfoBase.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RoomGameInfoBase();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.gameState = reader.int32();
                        break;
                    }
                case 2: {
                        message.currentChair = reader.int32();
                        break;
                    }
                case 3: {
                        if (!(message.trusteeList && message.trusteeList.length))
                            message.trusteeList = [];
                        if ((tag & 7) === 2) {
                            var end2 = reader.uint32() + reader.pos;
                            while (reader.pos < end2)
                                message.trusteeList.push(reader.bool());
                        } else
                            message.trusteeList.push(reader.bool());
                        break;
                    }
                case 4: {
                        message.nextTurnTime = reader.int64();
                        break;
                    }
                case 5: {
                        message.applyDismissUserid = reader.int64();
                        break;
                    }
                case 6: {
                        message.applyDismissTime = reader.int64();
                        break;
                    }
                case 7: {
                        if (!(message.applyDismissList && message.applyDismissList.length))
                            message.applyDismissList = [];
                        if ((tag & 7) === 2) {
                            var end2 = reader.uint32() + reader.pos;
                            while (reader.pos < end2)
                                message.applyDismissList.push(reader.int32());
                        } else
                            message.applyDismissList.push(reader.int32());
                        break;
                    }
                case 8: {
                        message.applyDismissRefuseUserid = reader.int64();
                        break;
                    }
                case 9: {
                        message.lastChair = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoomGameInfoBase message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RoomGameInfoBase} RoomGameInfoBase
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomGameInfoBase.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoomGameInfoBase message.
         * @function verify
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoomGameInfoBase.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.gameState != null && message.hasOwnProperty("gameState"))
                if (!$util.isInteger(message.gameState))
                    return "gameState: integer expected";
            if (message.currentChair != null && message.hasOwnProperty("currentChair"))
                if (!$util.isInteger(message.currentChair))
                    return "currentChair: integer expected";
            if (message.trusteeList != null && message.hasOwnProperty("trusteeList")) {
                if (!Array.isArray(message.trusteeList))
                    return "trusteeList: array expected";
                for (var i = 0; i < message.trusteeList.length; ++i)
                    if (typeof message.trusteeList[i] !== "boolean")
                        return "trusteeList: boolean[] expected";
            }
            if (message.nextTurnTime != null && message.hasOwnProperty("nextTurnTime"))
                if (!$util.isInteger(message.nextTurnTime) && !(message.nextTurnTime && $util.isInteger(message.nextTurnTime.low) && $util.isInteger(message.nextTurnTime.high)))
                    return "nextTurnTime: integer|Long expected";
            if (message.applyDismissUserid != null && message.hasOwnProperty("applyDismissUserid"))
                if (!$util.isInteger(message.applyDismissUserid) && !(message.applyDismissUserid && $util.isInteger(message.applyDismissUserid.low) && $util.isInteger(message.applyDismissUserid.high)))
                    return "applyDismissUserid: integer|Long expected";
            if (message.applyDismissTime != null && message.hasOwnProperty("applyDismissTime"))
                if (!$util.isInteger(message.applyDismissTime) && !(message.applyDismissTime && $util.isInteger(message.applyDismissTime.low) && $util.isInteger(message.applyDismissTime.high)))
                    return "applyDismissTime: integer|Long expected";
            if (message.applyDismissList != null && message.hasOwnProperty("applyDismissList")) {
                if (!Array.isArray(message.applyDismissList))
                    return "applyDismissList: array expected";
                for (var i = 0; i < message.applyDismissList.length; ++i)
                    if (!$util.isInteger(message.applyDismissList[i]))
                        return "applyDismissList: integer[] expected";
            }
            if (message.applyDismissRefuseUserid != null && message.hasOwnProperty("applyDismissRefuseUserid"))
                if (!$util.isInteger(message.applyDismissRefuseUserid) && !(message.applyDismissRefuseUserid && $util.isInteger(message.applyDismissRefuseUserid.low) && $util.isInteger(message.applyDismissRefuseUserid.high)))
                    return "applyDismissRefuseUserid: integer|Long expected";
            if (message.lastChair != null && message.hasOwnProperty("lastChair"))
                if (!$util.isInteger(message.lastChair))
                    return "lastChair: integer expected";
            return null;
        };

        /**
         * Creates a RoomGameInfoBase message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RoomGameInfoBase} RoomGameInfoBase
         */
        RoomGameInfoBase.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RoomGameInfoBase)
                return object;
            var message = new $root.JhaoProto.RoomGameInfoBase();
            if (object.gameState != null)
                message.gameState = object.gameState | 0;
            if (object.currentChair != null)
                message.currentChair = object.currentChair | 0;
            if (object.trusteeList) {
                if (!Array.isArray(object.trusteeList))
                    throw TypeError(".JhaoProto.RoomGameInfoBase.trusteeList: array expected");
                message.trusteeList = [];
                for (var i = 0; i < object.trusteeList.length; ++i)
                    message.trusteeList[i] = Boolean(object.trusteeList[i]);
            }
            if (object.nextTurnTime != null)
                if ($util.Long)
                    (message.nextTurnTime = $util.Long.fromValue(object.nextTurnTime)).unsigned = false;
                else if (typeof object.nextTurnTime === "string")
                    message.nextTurnTime = parseInt(object.nextTurnTime, 10);
                else if (typeof object.nextTurnTime === "number")
                    message.nextTurnTime = object.nextTurnTime;
                else if (typeof object.nextTurnTime === "object")
                    message.nextTurnTime = new $util.LongBits(object.nextTurnTime.low >>> 0, object.nextTurnTime.high >>> 0).toNumber();
            if (object.applyDismissUserid != null)
                if ($util.Long)
                    (message.applyDismissUserid = $util.Long.fromValue(object.applyDismissUserid)).unsigned = false;
                else if (typeof object.applyDismissUserid === "string")
                    message.applyDismissUserid = parseInt(object.applyDismissUserid, 10);
                else if (typeof object.applyDismissUserid === "number")
                    message.applyDismissUserid = object.applyDismissUserid;
                else if (typeof object.applyDismissUserid === "object")
                    message.applyDismissUserid = new $util.LongBits(object.applyDismissUserid.low >>> 0, object.applyDismissUserid.high >>> 0).toNumber();
            if (object.applyDismissTime != null)
                if ($util.Long)
                    (message.applyDismissTime = $util.Long.fromValue(object.applyDismissTime)).unsigned = false;
                else if (typeof object.applyDismissTime === "string")
                    message.applyDismissTime = parseInt(object.applyDismissTime, 10);
                else if (typeof object.applyDismissTime === "number")
                    message.applyDismissTime = object.applyDismissTime;
                else if (typeof object.applyDismissTime === "object")
                    message.applyDismissTime = new $util.LongBits(object.applyDismissTime.low >>> 0, object.applyDismissTime.high >>> 0).toNumber();
            if (object.applyDismissList) {
                if (!Array.isArray(object.applyDismissList))
                    throw TypeError(".JhaoProto.RoomGameInfoBase.applyDismissList: array expected");
                message.applyDismissList = [];
                for (var i = 0; i < object.applyDismissList.length; ++i)
                    message.applyDismissList[i] = object.applyDismissList[i] | 0;
            }
            if (object.applyDismissRefuseUserid != null)
                if ($util.Long)
                    (message.applyDismissRefuseUserid = $util.Long.fromValue(object.applyDismissRefuseUserid)).unsigned = false;
                else if (typeof object.applyDismissRefuseUserid === "string")
                    message.applyDismissRefuseUserid = parseInt(object.applyDismissRefuseUserid, 10);
                else if (typeof object.applyDismissRefuseUserid === "number")
                    message.applyDismissRefuseUserid = object.applyDismissRefuseUserid;
                else if (typeof object.applyDismissRefuseUserid === "object")
                    message.applyDismissRefuseUserid = new $util.LongBits(object.applyDismissRefuseUserid.low >>> 0, object.applyDismissRefuseUserid.high >>> 0).toNumber();
            if (object.lastChair != null)
                message.lastChair = object.lastChair | 0;
            return message;
        };

        /**
         * Creates a plain object from a RoomGameInfoBase message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {JhaoProto.RoomGameInfoBase} message RoomGameInfoBase
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoomGameInfoBase.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults) {
                object.trusteeList = [];
                object.applyDismissList = [];
            }
            if (options.defaults) {
                object.gameState = 0;
                object.currentChair = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.nextTurnTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.nextTurnTime = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.applyDismissUserid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.applyDismissUserid = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.applyDismissTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.applyDismissTime = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.applyDismissRefuseUserid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.applyDismissRefuseUserid = options.longs === String ? "0" : 0;
                object.lastChair = 0;
            }
            if (message.gameState != null && message.hasOwnProperty("gameState"))
                object.gameState = message.gameState;
            if (message.currentChair != null && message.hasOwnProperty("currentChair"))
                object.currentChair = message.currentChair;
            if (message.trusteeList && message.trusteeList.length) {
                object.trusteeList = [];
                for (var j = 0; j < message.trusteeList.length; ++j)
                    object.trusteeList[j] = message.trusteeList[j];
            }
            if (message.nextTurnTime != null && message.hasOwnProperty("nextTurnTime"))
                if (typeof message.nextTurnTime === "number")
                    object.nextTurnTime = options.longs === String ? String(message.nextTurnTime) : message.nextTurnTime;
                else
                    object.nextTurnTime = options.longs === String ? $util.Long.prototype.toString.call(message.nextTurnTime) : options.longs === Number ? new $util.LongBits(message.nextTurnTime.low >>> 0, message.nextTurnTime.high >>> 0).toNumber() : message.nextTurnTime;
            if (message.applyDismissUserid != null && message.hasOwnProperty("applyDismissUserid"))
                if (typeof message.applyDismissUserid === "number")
                    object.applyDismissUserid = options.longs === String ? String(message.applyDismissUserid) : message.applyDismissUserid;
                else
                    object.applyDismissUserid = options.longs === String ? $util.Long.prototype.toString.call(message.applyDismissUserid) : options.longs === Number ? new $util.LongBits(message.applyDismissUserid.low >>> 0, message.applyDismissUserid.high >>> 0).toNumber() : message.applyDismissUserid;
            if (message.applyDismissTime != null && message.hasOwnProperty("applyDismissTime"))
                if (typeof message.applyDismissTime === "number")
                    object.applyDismissTime = options.longs === String ? String(message.applyDismissTime) : message.applyDismissTime;
                else
                    object.applyDismissTime = options.longs === String ? $util.Long.prototype.toString.call(message.applyDismissTime) : options.longs === Number ? new $util.LongBits(message.applyDismissTime.low >>> 0, message.applyDismissTime.high >>> 0).toNumber() : message.applyDismissTime;
            if (message.applyDismissList && message.applyDismissList.length) {
                object.applyDismissList = [];
                for (var j = 0; j < message.applyDismissList.length; ++j)
                    object.applyDismissList[j] = message.applyDismissList[j];
            }
            if (message.applyDismissRefuseUserid != null && message.hasOwnProperty("applyDismissRefuseUserid"))
                if (typeof message.applyDismissRefuseUserid === "number")
                    object.applyDismissRefuseUserid = options.longs === String ? String(message.applyDismissRefuseUserid) : message.applyDismissRefuseUserid;
                else
                    object.applyDismissRefuseUserid = options.longs === String ? $util.Long.prototype.toString.call(message.applyDismissRefuseUserid) : options.longs === Number ? new $util.LongBits(message.applyDismissRefuseUserid.low >>> 0, message.applyDismissRefuseUserid.high >>> 0).toNumber() : message.applyDismissRefuseUserid;
            if (message.lastChair != null && message.hasOwnProperty("lastChair"))
                object.lastChair = message.lastChair;
            return object;
        };

        /**
         * Converts this RoomGameInfoBase to JSON.
         * @function toJSON
         * @memberof JhaoProto.RoomGameInfoBase
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoomGameInfoBase.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoomGameInfoBase
         * @function getTypeUrl
         * @memberof JhaoProto.RoomGameInfoBase
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoomGameInfoBase.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RoomGameInfoBase";
        };

        return RoomGameInfoBase;
    })();

    JhaoProto.HandCardInfo = (function() {

        /**
         * Properties of a HandCardInfo.
         * @memberof JhaoProto
         * @interface IHandCardInfo
         * @property {Array.<number>|null} [handCardList] HandCardInfo handCardList
         */

        /**
         * Constructs a new HandCardInfo.
         * @memberof JhaoProto
         * @classdesc Represents a HandCardInfo.
         * @implements IHandCardInfo
         * @constructor
         * @param {JhaoProto.IHandCardInfo=} [properties] Properties to set
         */
        function HandCardInfo(properties) {
            this.handCardList = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * HandCardInfo handCardList.
         * @member {Array.<number>} handCardList
         * @memberof JhaoProto.HandCardInfo
         * @instance
         */
        HandCardInfo.prototype.handCardList = $util.emptyArray;

        /**
         * Creates a new HandCardInfo instance using the specified properties.
         * @function create
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {JhaoProto.IHandCardInfo=} [properties] Properties to set
         * @returns {JhaoProto.HandCardInfo} HandCardInfo instance
         */
        HandCardInfo.create = function create(properties) {
            return new HandCardInfo(properties);
        };

        /**
         * Encodes the specified HandCardInfo message. Does not implicitly {@link JhaoProto.HandCardInfo.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {JhaoProto.IHandCardInfo} message HandCardInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        HandCardInfo.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.handCardList != null && message.handCardList.length) {
                writer.uint32(/* id 1, wireType 2 =*/10).fork();
                for (var i = 0; i < message.handCardList.length; ++i)
                    writer.int32(message.handCardList[i]);
                writer.ldelim();
            }
            return writer;
        };

        /**
         * Encodes the specified HandCardInfo message, length delimited. Does not implicitly {@link JhaoProto.HandCardInfo.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {JhaoProto.IHandCardInfo} message HandCardInfo message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        HandCardInfo.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a HandCardInfo message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.HandCardInfo} HandCardInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HandCardInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.HandCardInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.handCardList && message.handCardList.length))
                            message.handCardList = [];
                        if ((tag & 7) === 2) {
                            var end2 = reader.uint32() + reader.pos;
                            while (reader.pos < end2)
                                message.handCardList.push(reader.int32());
                        } else
                            message.handCardList.push(reader.int32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a HandCardInfo message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.HandCardInfo} HandCardInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HandCardInfo.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a HandCardInfo message.
         * @function verify
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        HandCardInfo.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.handCardList != null && message.hasOwnProperty("handCardList")) {
                if (!Array.isArray(message.handCardList))
                    return "handCardList: array expected";
                for (var i = 0; i < message.handCardList.length; ++i)
                    if (!$util.isInteger(message.handCardList[i]))
                        return "handCardList: integer[] expected";
            }
            return null;
        };

        /**
         * Creates a HandCardInfo message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.HandCardInfo} HandCardInfo
         */
        HandCardInfo.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.HandCardInfo)
                return object;
            var message = new $root.JhaoProto.HandCardInfo();
            if (object.handCardList) {
                if (!Array.isArray(object.handCardList))
                    throw TypeError(".JhaoProto.HandCardInfo.handCardList: array expected");
                message.handCardList = [];
                for (var i = 0; i < object.handCardList.length; ++i)
                    message.handCardList[i] = object.handCardList[i] | 0;
            }
            return message;
        };

        /**
         * Creates a plain object from a HandCardInfo message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {JhaoProto.HandCardInfo} message HandCardInfo
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        HandCardInfo.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.handCardList = [];
            if (message.handCardList && message.handCardList.length) {
                object.handCardList = [];
                for (var j = 0; j < message.handCardList.length; ++j)
                    object.handCardList[j] = message.handCardList[j];
            }
            return object;
        };

        /**
         * Converts this HandCardInfo to JSON.
         * @function toJSON
         * @memberof JhaoProto.HandCardInfo
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        HandCardInfo.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for HandCardInfo
         * @function getTypeUrl
         * @memberof JhaoProto.HandCardInfo
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        HandCardInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.HandCardInfo";
        };

        return HandCardInfo;
    })();

    JhaoProto.RoomGameInfoMj = (function() {

        /**
         * Properties of a RoomGameInfoMj.
         * @memberof JhaoProto
         * @interface IRoomGameInfoMj
         * @property {Array.<JhaoProto.IHandCardInfo>|null} [handCardInfo] RoomGameInfoMj handCardInfo
         * @property {number|null} [bankerChair] RoomGameInfoMj bankerChair
         * @property {number|null} [lastOut] RoomGameInfoMj lastOut
         * @property {number|null} [lastGet] RoomGameInfoMj lastGet
         * @property {Array.<JhaoProto.IHandCardInfo>|null} [outCardList] RoomGameInfoMj outCardList
         */

        /**
         * Constructs a new RoomGameInfoMj.
         * @memberof JhaoProto
         * @classdesc Represents a RoomGameInfoMj.
         * @implements IRoomGameInfoMj
         * @constructor
         * @param {JhaoProto.IRoomGameInfoMj=} [properties] Properties to set
         */
        function RoomGameInfoMj(properties) {
            this.handCardInfo = [];
            this.outCardList = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RoomGameInfoMj handCardInfo.
         * @member {Array.<JhaoProto.IHandCardInfo>} handCardInfo
         * @memberof JhaoProto.RoomGameInfoMj
         * @instance
         */
        RoomGameInfoMj.prototype.handCardInfo = $util.emptyArray;

        /**
         * RoomGameInfoMj bankerChair.
         * @member {number} bankerChair
         * @memberof JhaoProto.RoomGameInfoMj
         * @instance
         */
        RoomGameInfoMj.prototype.bankerChair = 0;

        /**
         * RoomGameInfoMj lastOut.
         * @member {number} lastOut
         * @memberof JhaoProto.RoomGameInfoMj
         * @instance
         */
        RoomGameInfoMj.prototype.lastOut = 0;

        /**
         * RoomGameInfoMj lastGet.
         * @member {number} lastGet
         * @memberof JhaoProto.RoomGameInfoMj
         * @instance
         */
        RoomGameInfoMj.prototype.lastGet = 0;

        /**
         * RoomGameInfoMj outCardList.
         * @member {Array.<JhaoProto.IHandCardInfo>} outCardList
         * @memberof JhaoProto.RoomGameInfoMj
         * @instance
         */
        RoomGameInfoMj.prototype.outCardList = $util.emptyArray;

        /**
         * Creates a new RoomGameInfoMj instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {JhaoProto.IRoomGameInfoMj=} [properties] Properties to set
         * @returns {JhaoProto.RoomGameInfoMj} RoomGameInfoMj instance
         */
        RoomGameInfoMj.create = function create(properties) {
            return new RoomGameInfoMj(properties);
        };

        /**
         * Encodes the specified RoomGameInfoMj message. Does not implicitly {@link JhaoProto.RoomGameInfoMj.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {JhaoProto.IRoomGameInfoMj} message RoomGameInfoMj message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomGameInfoMj.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.handCardInfo != null && message.handCardInfo.length)
                for (var i = 0; i < message.handCardInfo.length; ++i)
                    $root.JhaoProto.HandCardInfo.encode(message.handCardInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            if (message.bankerChair != null && Object.hasOwnProperty.call(message, "bankerChair"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.bankerChair);
            if (message.lastOut != null && Object.hasOwnProperty.call(message, "lastOut"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.lastOut);
            if (message.lastGet != null && Object.hasOwnProperty.call(message, "lastGet"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.lastGet);
            if (message.outCardList != null && message.outCardList.length)
                for (var i = 0; i < message.outCardList.length; ++i)
                    $root.JhaoProto.HandCardInfo.encode(message.outCardList[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified RoomGameInfoMj message, length delimited. Does not implicitly {@link JhaoProto.RoomGameInfoMj.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {JhaoProto.IRoomGameInfoMj} message RoomGameInfoMj message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomGameInfoMj.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoomGameInfoMj message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RoomGameInfoMj} RoomGameInfoMj
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomGameInfoMj.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RoomGameInfoMj();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.handCardInfo && message.handCardInfo.length))
                            message.handCardInfo = [];
                        message.handCardInfo.push($root.JhaoProto.HandCardInfo.decode(reader, reader.uint32()));
                        break;
                    }
                case 2: {
                        message.bankerChair = reader.int32();
                        break;
                    }
                case 3: {
                        message.lastOut = reader.int32();
                        break;
                    }
                case 4: {
                        message.lastGet = reader.int32();
                        break;
                    }
                case 5: {
                        if (!(message.outCardList && message.outCardList.length))
                            message.outCardList = [];
                        message.outCardList.push($root.JhaoProto.HandCardInfo.decode(reader, reader.uint32()));
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoomGameInfoMj message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RoomGameInfoMj} RoomGameInfoMj
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomGameInfoMj.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoomGameInfoMj message.
         * @function verify
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoomGameInfoMj.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.handCardInfo != null && message.hasOwnProperty("handCardInfo")) {
                if (!Array.isArray(message.handCardInfo))
                    return "handCardInfo: array expected";
                for (var i = 0; i < message.handCardInfo.length; ++i) {
                    var error = $root.JhaoProto.HandCardInfo.verify(message.handCardInfo[i]);
                    if (error)
                        return "handCardInfo." + error;
                }
            }
            if (message.bankerChair != null && message.hasOwnProperty("bankerChair"))
                if (!$util.isInteger(message.bankerChair))
                    return "bankerChair: integer expected";
            if (message.lastOut != null && message.hasOwnProperty("lastOut"))
                if (!$util.isInteger(message.lastOut))
                    return "lastOut: integer expected";
            if (message.lastGet != null && message.hasOwnProperty("lastGet"))
                if (!$util.isInteger(message.lastGet))
                    return "lastGet: integer expected";
            if (message.outCardList != null && message.hasOwnProperty("outCardList")) {
                if (!Array.isArray(message.outCardList))
                    return "outCardList: array expected";
                for (var i = 0; i < message.outCardList.length; ++i) {
                    var error = $root.JhaoProto.HandCardInfo.verify(message.outCardList[i]);
                    if (error)
                        return "outCardList." + error;
                }
            }
            return null;
        };

        /**
         * Creates a RoomGameInfoMj message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RoomGameInfoMj} RoomGameInfoMj
         */
        RoomGameInfoMj.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RoomGameInfoMj)
                return object;
            var message = new $root.JhaoProto.RoomGameInfoMj();
            if (object.handCardInfo) {
                if (!Array.isArray(object.handCardInfo))
                    throw TypeError(".JhaoProto.RoomGameInfoMj.handCardInfo: array expected");
                message.handCardInfo = [];
                for (var i = 0; i < object.handCardInfo.length; ++i) {
                    if (typeof object.handCardInfo[i] !== "object")
                        throw TypeError(".JhaoProto.RoomGameInfoMj.handCardInfo: object expected");
                    message.handCardInfo[i] = $root.JhaoProto.HandCardInfo.fromObject(object.handCardInfo[i]);
                }
            }
            if (object.bankerChair != null)
                message.bankerChair = object.bankerChair | 0;
            if (object.lastOut != null)
                message.lastOut = object.lastOut | 0;
            if (object.lastGet != null)
                message.lastGet = object.lastGet | 0;
            if (object.outCardList) {
                if (!Array.isArray(object.outCardList))
                    throw TypeError(".JhaoProto.RoomGameInfoMj.outCardList: array expected");
                message.outCardList = [];
                for (var i = 0; i < object.outCardList.length; ++i) {
                    if (typeof object.outCardList[i] !== "object")
                        throw TypeError(".JhaoProto.RoomGameInfoMj.outCardList: object expected");
                    message.outCardList[i] = $root.JhaoProto.HandCardInfo.fromObject(object.outCardList[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a RoomGameInfoMj message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {JhaoProto.RoomGameInfoMj} message RoomGameInfoMj
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoomGameInfoMj.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults) {
                object.handCardInfo = [];
                object.outCardList = [];
            }
            if (options.defaults) {
                object.bankerChair = 0;
                object.lastOut = 0;
                object.lastGet = 0;
            }
            if (message.handCardInfo && message.handCardInfo.length) {
                object.handCardInfo = [];
                for (var j = 0; j < message.handCardInfo.length; ++j)
                    object.handCardInfo[j] = $root.JhaoProto.HandCardInfo.toObject(message.handCardInfo[j], options);
            }
            if (message.bankerChair != null && message.hasOwnProperty("bankerChair"))
                object.bankerChair = message.bankerChair;
            if (message.lastOut != null && message.hasOwnProperty("lastOut"))
                object.lastOut = message.lastOut;
            if (message.lastGet != null && message.hasOwnProperty("lastGet"))
                object.lastGet = message.lastGet;
            if (message.outCardList && message.outCardList.length) {
                object.outCardList = [];
                for (var j = 0; j < message.outCardList.length; ++j)
                    object.outCardList[j] = $root.JhaoProto.HandCardInfo.toObject(message.outCardList[j], options);
            }
            return object;
        };

        /**
         * Converts this RoomGameInfoMj to JSON.
         * @function toJSON
         * @memberof JhaoProto.RoomGameInfoMj
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoomGameInfoMj.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoomGameInfoMj
         * @function getTypeUrl
         * @memberof JhaoProto.RoomGameInfoMj
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoomGameInfoMj.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RoomGameInfoMj";
        };

        return RoomGameInfoMj;
    })();

    JhaoProto.RoomModel = (function() {

        /**
         * Properties of a RoomModel.
         * @memberof JhaoProto
         * @interface IRoomModel
         * @property {number|null} [roomId] RoomModel roomId
         * @property {string|null} [name] RoomModel name
         * @property {number|null} [roomType] RoomModel roomType
         * @property {number|null} [gameType] RoomModel gameType
         * @property {number|Long|null} [creator] RoomModel creator
         * @property {JhaoProto.IRoomConfigBase|null} [roomConfigBase] RoomModel roomConfigBase
         * @property {JhaoProto.IRoomConfigMj|null} [roomConfigMj] RoomModel roomConfigMj
         * @property {number|null} [clubid] RoomModel clubid
         * @property {number|null} [numOfTurns] RoomModel numOfTurns
         * @property {number|Long|null} [createTime] RoomModel createTime
         * @property {number|null} [serverId] RoomModel serverId
         * @property {Array.<JhaoProto.IRoomPlayer>|null} [playerList] RoomModel playerList
         * @property {JhaoProto.IRoomGameInfoBase|null} [gameInfoBase] RoomModel gameInfoBase
         * @property {JhaoProto.IRoomGameInfoMj|null} [gameInfoMj] RoomModel gameInfoMj
         */

        /**
         * Constructs a new RoomModel.
         * @memberof JhaoProto
         * @classdesc Represents a RoomModel.
         * @implements IRoomModel
         * @constructor
         * @param {JhaoProto.IRoomModel=} [properties] Properties to set
         */
        function RoomModel(properties) {
            this.playerList = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RoomModel roomId.
         * @member {number} roomId
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.roomId = 0;

        /**
         * RoomModel name.
         * @member {string} name
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.name = "";

        /**
         * RoomModel roomType.
         * @member {number} roomType
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.roomType = 0;

        /**
         * RoomModel gameType.
         * @member {number} gameType
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.gameType = 0;

        /**
         * RoomModel creator.
         * @member {number|Long} creator
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.creator = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * RoomModel roomConfigBase.
         * @member {JhaoProto.IRoomConfigBase|null|undefined} roomConfigBase
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.roomConfigBase = null;

        /**
         * RoomModel roomConfigMj.
         * @member {JhaoProto.IRoomConfigMj|null|undefined} roomConfigMj
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.roomConfigMj = null;

        /**
         * RoomModel clubid.
         * @member {number} clubid
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.clubid = 0;

        /**
         * RoomModel numOfTurns.
         * @member {number} numOfTurns
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.numOfTurns = 0;

        /**
         * RoomModel createTime.
         * @member {number|Long} createTime
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.createTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * RoomModel serverId.
         * @member {number} serverId
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.serverId = 0;

        /**
         * RoomModel playerList.
         * @member {Array.<JhaoProto.IRoomPlayer>} playerList
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.playerList = $util.emptyArray;

        /**
         * RoomModel gameInfoBase.
         * @member {JhaoProto.IRoomGameInfoBase|null|undefined} gameInfoBase
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.gameInfoBase = null;

        /**
         * RoomModel gameInfoMj.
         * @member {JhaoProto.IRoomGameInfoMj|null|undefined} gameInfoMj
         * @memberof JhaoProto.RoomModel
         * @instance
         */
        RoomModel.prototype.gameInfoMj = null;

        /**
         * Creates a new RoomModel instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {JhaoProto.IRoomModel=} [properties] Properties to set
         * @returns {JhaoProto.RoomModel} RoomModel instance
         */
        RoomModel.create = function create(properties) {
            return new RoomModel(properties);
        };

        /**
         * Encodes the specified RoomModel message. Does not implicitly {@link JhaoProto.RoomModel.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {JhaoProto.IRoomModel} message RoomModel message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomModel.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.roomId != null && Object.hasOwnProperty.call(message, "roomId"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.roomId);
            if (message.name != null && Object.hasOwnProperty.call(message, "name"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.name);
            if (message.roomType != null && Object.hasOwnProperty.call(message, "roomType"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.roomType);
            if (message.gameType != null && Object.hasOwnProperty.call(message, "gameType"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.gameType);
            if (message.creator != null && Object.hasOwnProperty.call(message, "creator"))
                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.creator);
            if (message.roomConfigBase != null && Object.hasOwnProperty.call(message, "roomConfigBase"))
                $root.JhaoProto.RoomConfigBase.encode(message.roomConfigBase, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
            if (message.roomConfigMj != null && Object.hasOwnProperty.call(message, "roomConfigMj"))
                $root.JhaoProto.RoomConfigMj.encode(message.roomConfigMj, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 8, wireType 0 =*/64).int32(message.clubid);
            if (message.numOfTurns != null && Object.hasOwnProperty.call(message, "numOfTurns"))
                writer.uint32(/* id 9, wireType 0 =*/72).int32(message.numOfTurns);
            if (message.createTime != null && Object.hasOwnProperty.call(message, "createTime"))
                writer.uint32(/* id 10, wireType 0 =*/80).int64(message.createTime);
            if (message.serverId != null && Object.hasOwnProperty.call(message, "serverId"))
                writer.uint32(/* id 11, wireType 0 =*/88).int32(message.serverId);
            if (message.playerList != null && message.playerList.length)
                for (var i = 0; i < message.playerList.length; ++i)
                    $root.JhaoProto.RoomPlayer.encode(message.playerList[i], writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();
            if (message.gameInfoBase != null && Object.hasOwnProperty.call(message, "gameInfoBase"))
                $root.JhaoProto.RoomGameInfoBase.encode(message.gameInfoBase, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();
            if (message.gameInfoMj != null && Object.hasOwnProperty.call(message, "gameInfoMj"))
                $root.JhaoProto.RoomGameInfoMj.encode(message.gameInfoMj, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified RoomModel message, length delimited. Does not implicitly {@link JhaoProto.RoomModel.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {JhaoProto.IRoomModel} message RoomModel message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoomModel.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoomModel message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RoomModel} RoomModel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomModel.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RoomModel();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.roomId = reader.int32();
                        break;
                    }
                case 2: {
                        message.name = reader.string();
                        break;
                    }
                case 3: {
                        message.roomType = reader.int32();
                        break;
                    }
                case 4: {
                        message.gameType = reader.int32();
                        break;
                    }
                case 5: {
                        message.creator = reader.int64();
                        break;
                    }
                case 6: {
                        message.roomConfigBase = $root.JhaoProto.RoomConfigBase.decode(reader, reader.uint32());
                        break;
                    }
                case 7: {
                        message.roomConfigMj = $root.JhaoProto.RoomConfigMj.decode(reader, reader.uint32());
                        break;
                    }
                case 8: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 9: {
                        message.numOfTurns = reader.int32();
                        break;
                    }
                case 10: {
                        message.createTime = reader.int64();
                        break;
                    }
                case 11: {
                        message.serverId = reader.int32();
                        break;
                    }
                case 12: {
                        if (!(message.playerList && message.playerList.length))
                            message.playerList = [];
                        message.playerList.push($root.JhaoProto.RoomPlayer.decode(reader, reader.uint32()));
                        break;
                    }
                case 13: {
                        message.gameInfoBase = $root.JhaoProto.RoomGameInfoBase.decode(reader, reader.uint32());
                        break;
                    }
                case 14: {
                        message.gameInfoMj = $root.JhaoProto.RoomGameInfoMj.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoomModel message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RoomModel} RoomModel
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoomModel.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoomModel message.
         * @function verify
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoomModel.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.roomId != null && message.hasOwnProperty("roomId"))
                if (!$util.isInteger(message.roomId))
                    return "roomId: integer expected";
            if (message.name != null && message.hasOwnProperty("name"))
                if (!$util.isString(message.name))
                    return "name: string expected";
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                if (!$util.isInteger(message.roomType))
                    return "roomType: integer expected";
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                if (!$util.isInteger(message.gameType))
                    return "gameType: integer expected";
            if (message.creator != null && message.hasOwnProperty("creator"))
                if (!$util.isInteger(message.creator) && !(message.creator && $util.isInteger(message.creator.low) && $util.isInteger(message.creator.high)))
                    return "creator: integer|Long expected";
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase")) {
                var error = $root.JhaoProto.RoomConfigBase.verify(message.roomConfigBase);
                if (error)
                    return "roomConfigBase." + error;
            }
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj")) {
                var error = $root.JhaoProto.RoomConfigMj.verify(message.roomConfigMj);
                if (error)
                    return "roomConfigMj." + error;
            }
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.numOfTurns != null && message.hasOwnProperty("numOfTurns"))
                if (!$util.isInteger(message.numOfTurns))
                    return "numOfTurns: integer expected";
            if (message.createTime != null && message.hasOwnProperty("createTime"))
                if (!$util.isInteger(message.createTime) && !(message.createTime && $util.isInteger(message.createTime.low) && $util.isInteger(message.createTime.high)))
                    return "createTime: integer|Long expected";
            if (message.serverId != null && message.hasOwnProperty("serverId"))
                if (!$util.isInteger(message.serverId))
                    return "serverId: integer expected";
            if (message.playerList != null && message.hasOwnProperty("playerList")) {
                if (!Array.isArray(message.playerList))
                    return "playerList: array expected";
                for (var i = 0; i < message.playerList.length; ++i) {
                    var error = $root.JhaoProto.RoomPlayer.verify(message.playerList[i]);
                    if (error)
                        return "playerList." + error;
                }
            }
            if (message.gameInfoBase != null && message.hasOwnProperty("gameInfoBase")) {
                var error = $root.JhaoProto.RoomGameInfoBase.verify(message.gameInfoBase);
                if (error)
                    return "gameInfoBase." + error;
            }
            if (message.gameInfoMj != null && message.hasOwnProperty("gameInfoMj")) {
                var error = $root.JhaoProto.RoomGameInfoMj.verify(message.gameInfoMj);
                if (error)
                    return "gameInfoMj." + error;
            }
            return null;
        };

        /**
         * Creates a RoomModel message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RoomModel} RoomModel
         */
        RoomModel.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RoomModel)
                return object;
            var message = new $root.JhaoProto.RoomModel();
            if (object.roomId != null)
                message.roomId = object.roomId | 0;
            if (object.name != null)
                message.name = String(object.name);
            if (object.roomType != null)
                message.roomType = object.roomType | 0;
            if (object.gameType != null)
                message.gameType = object.gameType | 0;
            if (object.creator != null)
                if ($util.Long)
                    (message.creator = $util.Long.fromValue(object.creator)).unsigned = false;
                else if (typeof object.creator === "string")
                    message.creator = parseInt(object.creator, 10);
                else if (typeof object.creator === "number")
                    message.creator = object.creator;
                else if (typeof object.creator === "object")
                    message.creator = new $util.LongBits(object.creator.low >>> 0, object.creator.high >>> 0).toNumber();
            if (object.roomConfigBase != null) {
                if (typeof object.roomConfigBase !== "object")
                    throw TypeError(".JhaoProto.RoomModel.roomConfigBase: object expected");
                message.roomConfigBase = $root.JhaoProto.RoomConfigBase.fromObject(object.roomConfigBase);
            }
            if (object.roomConfigMj != null) {
                if (typeof object.roomConfigMj !== "object")
                    throw TypeError(".JhaoProto.RoomModel.roomConfigMj: object expected");
                message.roomConfigMj = $root.JhaoProto.RoomConfigMj.fromObject(object.roomConfigMj);
            }
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.numOfTurns != null)
                message.numOfTurns = object.numOfTurns | 0;
            if (object.createTime != null)
                if ($util.Long)
                    (message.createTime = $util.Long.fromValue(object.createTime)).unsigned = false;
                else if (typeof object.createTime === "string")
                    message.createTime = parseInt(object.createTime, 10);
                else if (typeof object.createTime === "number")
                    message.createTime = object.createTime;
                else if (typeof object.createTime === "object")
                    message.createTime = new $util.LongBits(object.createTime.low >>> 0, object.createTime.high >>> 0).toNumber();
            if (object.serverId != null)
                message.serverId = object.serverId | 0;
            if (object.playerList) {
                if (!Array.isArray(object.playerList))
                    throw TypeError(".JhaoProto.RoomModel.playerList: array expected");
                message.playerList = [];
                for (var i = 0; i < object.playerList.length; ++i) {
                    if (typeof object.playerList[i] !== "object")
                        throw TypeError(".JhaoProto.RoomModel.playerList: object expected");
                    message.playerList[i] = $root.JhaoProto.RoomPlayer.fromObject(object.playerList[i]);
                }
            }
            if (object.gameInfoBase != null) {
                if (typeof object.gameInfoBase !== "object")
                    throw TypeError(".JhaoProto.RoomModel.gameInfoBase: object expected");
                message.gameInfoBase = $root.JhaoProto.RoomGameInfoBase.fromObject(object.gameInfoBase);
            }
            if (object.gameInfoMj != null) {
                if (typeof object.gameInfoMj !== "object")
                    throw TypeError(".JhaoProto.RoomModel.gameInfoMj: object expected");
                message.gameInfoMj = $root.JhaoProto.RoomGameInfoMj.fromObject(object.gameInfoMj);
            }
            return message;
        };

        /**
         * Creates a plain object from a RoomModel message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {JhaoProto.RoomModel} message RoomModel
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoomModel.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.playerList = [];
            if (options.defaults) {
                object.roomId = 0;
                object.name = "";
                object.roomType = 0;
                object.gameType = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.creator = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.creator = options.longs === String ? "0" : 0;
                object.roomConfigBase = null;
                object.roomConfigMj = null;
                object.clubid = 0;
                object.numOfTurns = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.createTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.createTime = options.longs === String ? "0" : 0;
                object.serverId = 0;
                object.gameInfoBase = null;
                object.gameInfoMj = null;
            }
            if (message.roomId != null && message.hasOwnProperty("roomId"))
                object.roomId = message.roomId;
            if (message.name != null && message.hasOwnProperty("name"))
                object.name = message.name;
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                object.roomType = message.roomType;
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                object.gameType = message.gameType;
            if (message.creator != null && message.hasOwnProperty("creator"))
                if (typeof message.creator === "number")
                    object.creator = options.longs === String ? String(message.creator) : message.creator;
                else
                    object.creator = options.longs === String ? $util.Long.prototype.toString.call(message.creator) : options.longs === Number ? new $util.LongBits(message.creator.low >>> 0, message.creator.high >>> 0).toNumber() : message.creator;
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase"))
                object.roomConfigBase = $root.JhaoProto.RoomConfigBase.toObject(message.roomConfigBase, options);
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj"))
                object.roomConfigMj = $root.JhaoProto.RoomConfigMj.toObject(message.roomConfigMj, options);
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.numOfTurns != null && message.hasOwnProperty("numOfTurns"))
                object.numOfTurns = message.numOfTurns;
            if (message.createTime != null && message.hasOwnProperty("createTime"))
                if (typeof message.createTime === "number")
                    object.createTime = options.longs === String ? String(message.createTime) : message.createTime;
                else
                    object.createTime = options.longs === String ? $util.Long.prototype.toString.call(message.createTime) : options.longs === Number ? new $util.LongBits(message.createTime.low >>> 0, message.createTime.high >>> 0).toNumber() : message.createTime;
            if (message.serverId != null && message.hasOwnProperty("serverId"))
                object.serverId = message.serverId;
            if (message.playerList && message.playerList.length) {
                object.playerList = [];
                for (var j = 0; j < message.playerList.length; ++j)
                    object.playerList[j] = $root.JhaoProto.RoomPlayer.toObject(message.playerList[j], options);
            }
            if (message.gameInfoBase != null && message.hasOwnProperty("gameInfoBase"))
                object.gameInfoBase = $root.JhaoProto.RoomGameInfoBase.toObject(message.gameInfoBase, options);
            if (message.gameInfoMj != null && message.hasOwnProperty("gameInfoMj"))
                object.gameInfoMj = $root.JhaoProto.RoomGameInfoMj.toObject(message.gameInfoMj, options);
            return object;
        };

        /**
         * Converts this RoomModel to JSON.
         * @function toJSON
         * @memberof JhaoProto.RoomModel
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoomModel.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoomModel
         * @function getTypeUrl
         * @memberof JhaoProto.RoomModel
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoomModel.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RoomModel";
        };

        return RoomModel;
    })();

    JhaoProto.BaseMsg = (function() {

        /**
         * Properties of a BaseMsg.
         * @memberof JhaoProto
         * @interface IBaseMsg
         * @property {number|null} [cmdOrder] BaseMsg cmdOrder
         * @property {number|null} [cmdIndex] BaseMsg cmdIndex
         * @property {number|Long|null} [timeUpload] BaseMsg timeUpload
         * @property {number|Long|null} [timeDownload] BaseMsg timeDownload
         * @property {JhaoProto.ErrorCodeWs|null} [errorCode] BaseMsg errorCode
         * @property {string|null} [errorMsg] BaseMsg errorMsg
         * @property {Uint8Array|null} [data] BaseMsg data
         */

        /**
         * Constructs a new BaseMsg.
         * @memberof JhaoProto
         * @classdesc 传输到服务器的公共数据
         * cmd_order = 命令序列号
         * cmd_index = 命令编号
         * time_upload = 上行时间戳(毫秒)
         * time_download = 下行时间戳(毫秒)
         * data = 业务逻辑data
         * @implements IBaseMsg
         * @constructor
         * @param {JhaoProto.IBaseMsg=} [properties] Properties to set
         */
        function BaseMsg(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * BaseMsg cmdOrder.
         * @member {number} cmdOrder
         * @memberof JhaoProto.BaseMsg
         * @instance
         */
        BaseMsg.prototype.cmdOrder = 0;

        /**
         * BaseMsg cmdIndex.
         * @member {number} cmdIndex
         * @memberof JhaoProto.BaseMsg
         * @instance
         */
        BaseMsg.prototype.cmdIndex = 0;

        /**
         * BaseMsg timeUpload.
         * @member {number|Long} timeUpload
         * @memberof JhaoProto.BaseMsg
         * @instance
         */
        BaseMsg.prototype.timeUpload = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * BaseMsg timeDownload.
         * @member {number|Long} timeDownload
         * @memberof JhaoProto.BaseMsg
         * @instance
         */
        BaseMsg.prototype.timeDownload = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * BaseMsg errorCode.
         * @member {JhaoProto.ErrorCodeWs} errorCode
         * @memberof JhaoProto.BaseMsg
         * @instance
         */
        BaseMsg.prototype.errorCode = 0;

        /**
         * BaseMsg errorMsg.
         * @member {string} errorMsg
         * @memberof JhaoProto.BaseMsg
         * @instance
         */
        BaseMsg.prototype.errorMsg = "";

        /**
         * BaseMsg data.
         * @member {Uint8Array} data
         * @memberof JhaoProto.BaseMsg
         * @instance
         */
        BaseMsg.prototype.data = $util.newBuffer([]);

        /**
         * Creates a new BaseMsg instance using the specified properties.
         * @function create
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {JhaoProto.IBaseMsg=} [properties] Properties to set
         * @returns {JhaoProto.BaseMsg} BaseMsg instance
         */
        BaseMsg.create = function create(properties) {
            return new BaseMsg(properties);
        };

        /**
         * Encodes the specified BaseMsg message. Does not implicitly {@link JhaoProto.BaseMsg.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {JhaoProto.IBaseMsg} message BaseMsg message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        BaseMsg.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.cmdOrder != null && Object.hasOwnProperty.call(message, "cmdOrder"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.cmdOrder);
            if (message.cmdIndex != null && Object.hasOwnProperty.call(message, "cmdIndex"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.cmdIndex);
            if (message.timeUpload != null && Object.hasOwnProperty.call(message, "timeUpload"))
                writer.uint32(/* id 3, wireType 0 =*/24).int64(message.timeUpload);
            if (message.timeDownload != null && Object.hasOwnProperty.call(message, "timeDownload"))
                writer.uint32(/* id 4, wireType 0 =*/32).int64(message.timeDownload);
            if (message.errorCode != null && Object.hasOwnProperty.call(message, "errorCode"))
                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.errorCode);
            if (message.errorMsg != null && Object.hasOwnProperty.call(message, "errorMsg"))
                writer.uint32(/* id 6, wireType 2 =*/50).string(message.errorMsg);
            if (message.data != null && Object.hasOwnProperty.call(message, "data"))
                writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.data);
            return writer;
        };

        /**
         * Encodes the specified BaseMsg message, length delimited. Does not implicitly {@link JhaoProto.BaseMsg.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {JhaoProto.IBaseMsg} message BaseMsg message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        BaseMsg.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a BaseMsg message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.BaseMsg} BaseMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        BaseMsg.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.BaseMsg();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.cmdOrder = reader.int32();
                        break;
                    }
                case 2: {
                        message.cmdIndex = reader.int32();
                        break;
                    }
                case 3: {
                        message.timeUpload = reader.int64();
                        break;
                    }
                case 4: {
                        message.timeDownload = reader.int64();
                        break;
                    }
                case 5: {
                        message.errorCode = reader.int32();
                        break;
                    }
                case 6: {
                        message.errorMsg = reader.string();
                        break;
                    }
                case 7: {
                        message.data = reader.bytes();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a BaseMsg message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.BaseMsg} BaseMsg
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        BaseMsg.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a BaseMsg message.
         * @function verify
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        BaseMsg.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.cmdOrder != null && message.hasOwnProperty("cmdOrder"))
                if (!$util.isInteger(message.cmdOrder))
                    return "cmdOrder: integer expected";
            if (message.cmdIndex != null && message.hasOwnProperty("cmdIndex"))
                if (!$util.isInteger(message.cmdIndex))
                    return "cmdIndex: integer expected";
            if (message.timeUpload != null && message.hasOwnProperty("timeUpload"))
                if (!$util.isInteger(message.timeUpload) && !(message.timeUpload && $util.isInteger(message.timeUpload.low) && $util.isInteger(message.timeUpload.high)))
                    return "timeUpload: integer|Long expected";
            if (message.timeDownload != null && message.hasOwnProperty("timeDownload"))
                if (!$util.isInteger(message.timeDownload) && !(message.timeDownload && $util.isInteger(message.timeDownload.low) && $util.isInteger(message.timeDownload.high)))
                    return "timeDownload: integer|Long expected";
            if (message.errorCode != null && message.hasOwnProperty("errorCode"))
                switch (message.errorCode) {
                default:
                    return "errorCode: enum value expected";
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                case 10:
                case 11:
                case 12:
                case 13:
                    break;
                }
            if (message.errorMsg != null && message.hasOwnProperty("errorMsg"))
                if (!$util.isString(message.errorMsg))
                    return "errorMsg: string expected";
            if (message.data != null && message.hasOwnProperty("data"))
                if (!(message.data && typeof message.data.length === "number" || $util.isString(message.data)))
                    return "data: buffer expected";
            return null;
        };

        /**
         * Creates a BaseMsg message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.BaseMsg} BaseMsg
         */
        BaseMsg.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.BaseMsg)
                return object;
            var message = new $root.JhaoProto.BaseMsg();
            if (object.cmdOrder != null)
                message.cmdOrder = object.cmdOrder | 0;
            if (object.cmdIndex != null)
                message.cmdIndex = object.cmdIndex | 0;
            if (object.timeUpload != null)
                if ($util.Long)
                    (message.timeUpload = $util.Long.fromValue(object.timeUpload)).unsigned = false;
                else if (typeof object.timeUpload === "string")
                    message.timeUpload = parseInt(object.timeUpload, 10);
                else if (typeof object.timeUpload === "number")
                    message.timeUpload = object.timeUpload;
                else if (typeof object.timeUpload === "object")
                    message.timeUpload = new $util.LongBits(object.timeUpload.low >>> 0, object.timeUpload.high >>> 0).toNumber();
            if (object.timeDownload != null)
                if ($util.Long)
                    (message.timeDownload = $util.Long.fromValue(object.timeDownload)).unsigned = false;
                else if (typeof object.timeDownload === "string")
                    message.timeDownload = parseInt(object.timeDownload, 10);
                else if (typeof object.timeDownload === "number")
                    message.timeDownload = object.timeDownload;
                else if (typeof object.timeDownload === "object")
                    message.timeDownload = new $util.LongBits(object.timeDownload.low >>> 0, object.timeDownload.high >>> 0).toNumber();
            switch (object.errorCode) {
            default:
                if (typeof object.errorCode === "number") {
                    message.errorCode = object.errorCode;
                    break;
                }
                break;
            case "Suc":
            case 0:
                message.errorCode = 0;
                break;
            case "Fail":
            case 1:
                message.errorCode = 1;
                break;
            case "Db_Error":
            case 2:
                message.errorCode = 2;
                break;
            case "RegisterError_HadUser":
            case 3:
                message.errorCode = 3;
                break;
            case "Error_Param":
            case 4:
                message.errorCode = 4;
                break;
            case "LoginError_NoUser":
            case 5:
                message.errorCode = 5;
                break;
            case "LoginError_NoPass":
            case 6:
                message.errorCode = 6;
                break;
            case "LoginError_Forbid":
            case 7:
                message.errorCode = 7;
                break;
            case "LoginError_MultiLogin":
            case 8:
                message.errorCode = 8;
                break;
            case "LoginError_NoLogin":
            case 9:
                message.errorCode = 9;
                break;
            case "LoginError_token":
            case 10:
                message.errorCode = 10;
                break;
            case "Feng_jin":
            case 11:
                message.errorCode = 11;
                break;
            case "No_user_data":
            case 12:
                message.errorCode = 12;
                break;
            case "Server_Weihu":
            case 13:
                message.errorCode = 13;
                break;
            }
            if (object.errorMsg != null)
                message.errorMsg = String(object.errorMsg);
            if (object.data != null)
                if (typeof object.data === "string")
                    $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);
                else if (object.data.length >= 0)
                    message.data = object.data;
            return message;
        };

        /**
         * Creates a plain object from a BaseMsg message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {JhaoProto.BaseMsg} message BaseMsg
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        BaseMsg.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.cmdOrder = 0;
                object.cmdIndex = 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.timeUpload = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.timeUpload = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.timeDownload = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.timeDownload = options.longs === String ? "0" : 0;
                object.errorCode = options.enums === String ? "Suc" : 0;
                object.errorMsg = "";
                if (options.bytes === String)
                    object.data = "";
                else {
                    object.data = [];
                    if (options.bytes !== Array)
                        object.data = $util.newBuffer(object.data);
                }
            }
            if (message.cmdOrder != null && message.hasOwnProperty("cmdOrder"))
                object.cmdOrder = message.cmdOrder;
            if (message.cmdIndex != null && message.hasOwnProperty("cmdIndex"))
                object.cmdIndex = message.cmdIndex;
            if (message.timeUpload != null && message.hasOwnProperty("timeUpload"))
                if (typeof message.timeUpload === "number")
                    object.timeUpload = options.longs === String ? String(message.timeUpload) : message.timeUpload;
                else
                    object.timeUpload = options.longs === String ? $util.Long.prototype.toString.call(message.timeUpload) : options.longs === Number ? new $util.LongBits(message.timeUpload.low >>> 0, message.timeUpload.high >>> 0).toNumber() : message.timeUpload;
            if (message.timeDownload != null && message.hasOwnProperty("timeDownload"))
                if (typeof message.timeDownload === "number")
                    object.timeDownload = options.longs === String ? String(message.timeDownload) : message.timeDownload;
                else
                    object.timeDownload = options.longs === String ? $util.Long.prototype.toString.call(message.timeDownload) : options.longs === Number ? new $util.LongBits(message.timeDownload.low >>> 0, message.timeDownload.high >>> 0).toNumber() : message.timeDownload;
            if (message.errorCode != null && message.hasOwnProperty("errorCode"))
                object.errorCode = options.enums === String ? $root.JhaoProto.ErrorCodeWs[message.errorCode] === undefined ? message.errorCode : $root.JhaoProto.ErrorCodeWs[message.errorCode] : message.errorCode;
            if (message.errorMsg != null && message.hasOwnProperty("errorMsg"))
                object.errorMsg = message.errorMsg;
            if (message.data != null && message.hasOwnProperty("data"))
                object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;
            return object;
        };

        /**
         * Converts this BaseMsg to JSON.
         * @function toJSON
         * @memberof JhaoProto.BaseMsg
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        BaseMsg.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for BaseMsg
         * @function getTypeUrl
         * @memberof JhaoProto.BaseMsg
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        BaseMsg.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.BaseMsg";
        };

        return BaseMsg;
    })();

    /**
     * ErrorCodeWs enum.
     * @name JhaoProto.ErrorCodeWs
     * @enum {number}
     * @property {number} Suc=0 Suc value
     * @property {number} Fail=1 Fail value
     * @property {number} Db_Error=2 Db_Error value
     * @property {number} RegisterError_HadUser=3 RegisterError_HadUser value
     * @property {number} Error_Param=4 Error_Param value
     * @property {number} LoginError_NoUser=5 LoginError_NoUser value
     * @property {number} LoginError_NoPass=6 LoginError_NoPass value
     * @property {number} LoginError_Forbid=7 LoginError_Forbid value
     * @property {number} LoginError_MultiLogin=8 LoginError_MultiLogin value
     * @property {number} LoginError_NoLogin=9 LoginError_NoLogin value
     * @property {number} LoginError_token=10 LoginError_token value
     * @property {number} Feng_jin=11 Feng_jin value
     * @property {number} No_user_data=12 No_user_data value
     * @property {number} Server_Weihu=13 Server_Weihu value
     */
    JhaoProto.ErrorCodeWs = (function() {
        var valuesById = {}, values = Object.create(valuesById);
        values[valuesById[0] = "Suc"] = 0;
        values[valuesById[1] = "Fail"] = 1;
        values[valuesById[2] = "Db_Error"] = 2;
        values[valuesById[3] = "RegisterError_HadUser"] = 3;
        values[valuesById[4] = "Error_Param"] = 4;
        values[valuesById[5] = "LoginError_NoUser"] = 5;
        values[valuesById[6] = "LoginError_NoPass"] = 6;
        values[valuesById[7] = "LoginError_Forbid"] = 7;
        values[valuesById[8] = "LoginError_MultiLogin"] = 8;
        values[valuesById[9] = "LoginError_NoLogin"] = 9;
        values[valuesById[10] = "LoginError_token"] = 10;
        values[valuesById[11] = "Feng_jin"] = 11;
        values[valuesById[12] = "No_user_data"] = 12;
        values[valuesById[13] = "Server_Weihu"] = 13;
        return values;
    })();

    /**
     * CmdIndex enum.
     * @name JhaoProto.CmdIndex
     * @enum {number}
     * @property {number} None=0 预设
     * @property {number} Ping=1 心跳
     * @property {number} Login=2 Login value
     * @property {number} club_list=1000 亲友圈
     * @property {number} club_create=1001 club_create value
     * @property {number} club_join=1002 club_join value
     * @property {number} club_apply_list=1003 club_apply_list value
     * @property {number} club_apply_handle=1004 club_apply_handle value
     * @property {number} club_exit=1005 club_exit value
     * @property {number} club_member_list=1006 club_member_list value
     * @property {number} club_delete_member=1007 club_delete_member value
     * @property {number} club_member_actor=1008 club_member_actor value
     * @property {number} club_score=1009 club_score value
     * @property {number} club_create_room_template=1010 club_create_room_template value
     * @property {number} club_delete_room_template=1011 club_delete_room_template value
     * @property {number} club_room=1012 club_room value
     * @property {number} create_room=2000 create_room value
     * @property {number} server_internal_None=9000000 server_internal_None value
     * @property {number} server_internal_Login=9000001 server_internal_Login value
     * @property {number} server_internal_kill_all_users=9000002 server_internal_kill_all_users value
     * @property {number} server_internal_set_server_status=9000003 server_internal_set_server_status value
     * @property {number} server_internal_get_server_status=9000004 server_internal_get_server_status value
     * @property {number} server_internal_update_online=9000005 server_internal_update_online value
     * @property {number} server_internal_is_in_server=9000006 server_internal_is_in_server value
     * @property {number} server_internal_is_user_online=9000007 server_internal_is_user_online value
     * @property {number} server_internal_club_create_room_template=9000008 server_internal_club_create_room_template value
     * @property {number} server_internal_club_delete_room_template=9000009 server_internal_club_delete_room_template value
     * @property {number} server_internal_createRoom=9000010 server_internal_createRoom value
     */
    JhaoProto.CmdIndex = (function() {
        var valuesById = {}, values = Object.create(valuesById);
        values[valuesById[0] = "None"] = 0;
        values[valuesById[1] = "Ping"] = 1;
        values[valuesById[2] = "Login"] = 2;
        values[valuesById[1000] = "club_list"] = 1000;
        values[valuesById[1001] = "club_create"] = 1001;
        values[valuesById[1002] = "club_join"] = 1002;
        values[valuesById[1003] = "club_apply_list"] = 1003;
        values[valuesById[1004] = "club_apply_handle"] = 1004;
        values[valuesById[1005] = "club_exit"] = 1005;
        values[valuesById[1006] = "club_member_list"] = 1006;
        values[valuesById[1007] = "club_delete_member"] = 1007;
        values[valuesById[1008] = "club_member_actor"] = 1008;
        values[valuesById[1009] = "club_score"] = 1009;
        values[valuesById[1010] = "club_create_room_template"] = 1010;
        values[valuesById[1011] = "club_delete_room_template"] = 1011;
        values[valuesById[1012] = "club_room"] = 1012;
        values[valuesById[2000] = "create_room"] = 2000;
        values[valuesById[9000000] = "server_internal_None"] = 9000000;
        values[valuesById[9000001] = "server_internal_Login"] = 9000001;
        values[valuesById[9000002] = "server_internal_kill_all_users"] = 9000002;
        values[valuesById[9000003] = "server_internal_set_server_status"] = 9000003;
        values[valuesById[9000004] = "server_internal_get_server_status"] = 9000004;
        values[valuesById[9000005] = "server_internal_update_online"] = 9000005;
        values[valuesById[9000006] = "server_internal_is_in_server"] = 9000006;
        values[valuesById[9000007] = "server_internal_is_user_online"] = 9000007;
        values[valuesById[9000008] = "server_internal_club_create_room_template"] = 9000008;
        values[valuesById[9000009] = "server_internal_club_delete_room_template"] = 9000009;
        values[valuesById[9000010] = "server_internal_createRoom"] = 9000010;
        return values;
    })();

    JhaoProto.ReqPing = (function() {

        /**
         * Properties of a ReqPing.
         * @memberof JhaoProto
         * @interface IReqPing
         * @property {string|null} [version] ReqPing version
         */

        /**
         * Constructs a new ReqPing.
         * @memberof JhaoProto
         * @classdesc Represents a ReqPing.
         * @implements IReqPing
         * @constructor
         * @param {JhaoProto.IReqPing=} [properties] Properties to set
         */
        function ReqPing(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * ReqPing version.
         * @member {string} version
         * @memberof JhaoProto.ReqPing
         * @instance
         */
        ReqPing.prototype.version = "";

        /**
         * Creates a new ReqPing instance using the specified properties.
         * @function create
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {JhaoProto.IReqPing=} [properties] Properties to set
         * @returns {JhaoProto.ReqPing} ReqPing instance
         */
        ReqPing.create = function create(properties) {
            return new ReqPing(properties);
        };

        /**
         * Encodes the specified ReqPing message. Does not implicitly {@link JhaoProto.ReqPing.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {JhaoProto.IReqPing} message ReqPing message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ReqPing.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.version != null && Object.hasOwnProperty.call(message, "version"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.version);
            return writer;
        };

        /**
         * Encodes the specified ReqPing message, length delimited. Does not implicitly {@link JhaoProto.ReqPing.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {JhaoProto.IReqPing} message ReqPing message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ReqPing.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ReqPing message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.ReqPing} ReqPing
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ReqPing.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.ReqPing();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.version = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a ReqPing message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.ReqPing} ReqPing
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ReqPing.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ReqPing message.
         * @function verify
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ReqPing.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.version != null && message.hasOwnProperty("version"))
                if (!$util.isString(message.version))
                    return "version: string expected";
            return null;
        };

        /**
         * Creates a ReqPing message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.ReqPing} ReqPing
         */
        ReqPing.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.ReqPing)
                return object;
            var message = new $root.JhaoProto.ReqPing();
            if (object.version != null)
                message.version = String(object.version);
            return message;
        };

        /**
         * Creates a plain object from a ReqPing message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {JhaoProto.ReqPing} message ReqPing
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ReqPing.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.version = "";
            if (message.version != null && message.hasOwnProperty("version"))
                object.version = message.version;
            return object;
        };

        /**
         * Converts this ReqPing to JSON.
         * @function toJSON
         * @memberof JhaoProto.ReqPing
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ReqPing.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ReqPing
         * @function getTypeUrl
         * @memberof JhaoProto.ReqPing
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ReqPing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.ReqPing";
        };

        return ReqPing;
    })();

    JhaoProto.RespPing = (function() {

        /**
         * Properties of a RespPing.
         * @memberof JhaoProto
         * @interface IRespPing
         * @property {number|Long|null} [t] RespPing t
         * @property {boolean|null} [n] RespPing n
         */

        /**
         * Constructs a new RespPing.
         * @memberof JhaoProto
         * @classdesc Represents a RespPing.
         * @implements IRespPing
         * @constructor
         * @param {JhaoProto.IRespPing=} [properties] Properties to set
         */
        function RespPing(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RespPing t.
         * @member {number|Long} t
         * @memberof JhaoProto.RespPing
         * @instance
         */
        RespPing.prototype.t = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * RespPing n.
         * @member {boolean} n
         * @memberof JhaoProto.RespPing
         * @instance
         */
        RespPing.prototype.n = false;

        /**
         * Creates a new RespPing instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RespPing
         * @static
         * @param {JhaoProto.IRespPing=} [properties] Properties to set
         * @returns {JhaoProto.RespPing} RespPing instance
         */
        RespPing.create = function create(properties) {
            return new RespPing(properties);
        };

        /**
         * Encodes the specified RespPing message. Does not implicitly {@link JhaoProto.RespPing.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RespPing
         * @static
         * @param {JhaoProto.IRespPing} message RespPing message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RespPing.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.t != null && Object.hasOwnProperty.call(message, "t"))
                writer.uint32(/* id 1, wireType 0 =*/8).int64(message.t);
            if (message.n != null && Object.hasOwnProperty.call(message, "n"))
                writer.uint32(/* id 2, wireType 0 =*/16).bool(message.n);
            return writer;
        };

        /**
         * Encodes the specified RespPing message, length delimited. Does not implicitly {@link JhaoProto.RespPing.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RespPing
         * @static
         * @param {JhaoProto.IRespPing} message RespPing message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RespPing.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RespPing message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RespPing
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RespPing} RespPing
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RespPing.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RespPing();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.t = reader.int64();
                        break;
                    }
                case 2: {
                        message.n = reader.bool();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RespPing message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RespPing
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RespPing} RespPing
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RespPing.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RespPing message.
         * @function verify
         * @memberof JhaoProto.RespPing
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RespPing.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.t != null && message.hasOwnProperty("t"))
                if (!$util.isInteger(message.t) && !(message.t && $util.isInteger(message.t.low) && $util.isInteger(message.t.high)))
                    return "t: integer|Long expected";
            if (message.n != null && message.hasOwnProperty("n"))
                if (typeof message.n !== "boolean")
                    return "n: boolean expected";
            return null;
        };

        /**
         * Creates a RespPing message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RespPing
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RespPing} RespPing
         */
        RespPing.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RespPing)
                return object;
            var message = new $root.JhaoProto.RespPing();
            if (object.t != null)
                if ($util.Long)
                    (message.t = $util.Long.fromValue(object.t)).unsigned = false;
                else if (typeof object.t === "string")
                    message.t = parseInt(object.t, 10);
                else if (typeof object.t === "number")
                    message.t = object.t;
                else if (typeof object.t === "object")
                    message.t = new $util.LongBits(object.t.low >>> 0, object.t.high >>> 0).toNumber();
            if (object.n != null)
                message.n = Boolean(object.n);
            return message;
        };

        /**
         * Creates a plain object from a RespPing message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RespPing
         * @static
         * @param {JhaoProto.RespPing} message RespPing
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RespPing.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.t = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.t = options.longs === String ? "0" : 0;
                object.n = false;
            }
            if (message.t != null && message.hasOwnProperty("t"))
                if (typeof message.t === "number")
                    object.t = options.longs === String ? String(message.t) : message.t;
                else
                    object.t = options.longs === String ? $util.Long.prototype.toString.call(message.t) : options.longs === Number ? new $util.LongBits(message.t.low >>> 0, message.t.high >>> 0).toNumber() : message.t;
            if (message.n != null && message.hasOwnProperty("n"))
                object.n = message.n;
            return object;
        };

        /**
         * Converts this RespPing to JSON.
         * @function toJSON
         * @memberof JhaoProto.RespPing
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RespPing.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RespPing
         * @function getTypeUrl
         * @memberof JhaoProto.RespPing
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RespPing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RespPing";
        };

        return RespPing;
    })();

    JhaoProto.ReqLogin = (function() {

        /**
         * Properties of a ReqLogin.
         * @memberof JhaoProto
         * @interface IReqLogin
         * @property {string|null} [account] ReqLogin account
         * @property {string|null} [token] ReqLogin token
         * @property {string|null} [nickname] ReqLogin nickname
         * @property {number|null} [sex] ReqLogin sex
         * @property {string|null} [headimgurl] ReqLogin headimgurl
         */

        /**
         * Constructs a new ReqLogin.
         * @memberof JhaoProto
         * @classdesc Represents a ReqLogin.
         * @implements IReqLogin
         * @constructor
         * @param {JhaoProto.IReqLogin=} [properties] Properties to set
         */
        function ReqLogin(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * ReqLogin account.
         * @member {string} account
         * @memberof JhaoProto.ReqLogin
         * @instance
         */
        ReqLogin.prototype.account = "";

        /**
         * ReqLogin token.
         * @member {string} token
         * @memberof JhaoProto.ReqLogin
         * @instance
         */
        ReqLogin.prototype.token = "";

        /**
         * ReqLogin nickname.
         * @member {string} nickname
         * @memberof JhaoProto.ReqLogin
         * @instance
         */
        ReqLogin.prototype.nickname = "";

        /**
         * ReqLogin sex.
         * @member {number} sex
         * @memberof JhaoProto.ReqLogin
         * @instance
         */
        ReqLogin.prototype.sex = 0;

        /**
         * ReqLogin headimgurl.
         * @member {string} headimgurl
         * @memberof JhaoProto.ReqLogin
         * @instance
         */
        ReqLogin.prototype.headimgurl = "";

        /**
         * Creates a new ReqLogin instance using the specified properties.
         * @function create
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {JhaoProto.IReqLogin=} [properties] Properties to set
         * @returns {JhaoProto.ReqLogin} ReqLogin instance
         */
        ReqLogin.create = function create(properties) {
            return new ReqLogin(properties);
        };

        /**
         * Encodes the specified ReqLogin message. Does not implicitly {@link JhaoProto.ReqLogin.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {JhaoProto.IReqLogin} message ReqLogin message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ReqLogin.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.account != null && Object.hasOwnProperty.call(message, "account"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.account);
            if (message.token != null && Object.hasOwnProperty.call(message, "token"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.token);
            if (message.nickname != null && Object.hasOwnProperty.call(message, "nickname"))
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.nickname);
            if (message.sex != null && Object.hasOwnProperty.call(message, "sex"))
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.sex);
            if (message.headimgurl != null && Object.hasOwnProperty.call(message, "headimgurl"))
                writer.uint32(/* id 5, wireType 2 =*/42).string(message.headimgurl);
            return writer;
        };

        /**
         * Encodes the specified ReqLogin message, length delimited. Does not implicitly {@link JhaoProto.ReqLogin.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {JhaoProto.IReqLogin} message ReqLogin message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ReqLogin.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ReqLogin message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.ReqLogin} ReqLogin
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ReqLogin.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.ReqLogin();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.account = reader.string();
                        break;
                    }
                case 2: {
                        message.token = reader.string();
                        break;
                    }
                case 3: {
                        message.nickname = reader.string();
                        break;
                    }
                case 4: {
                        message.sex = reader.int32();
                        break;
                    }
                case 5: {
                        message.headimgurl = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a ReqLogin message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.ReqLogin} ReqLogin
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ReqLogin.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ReqLogin message.
         * @function verify
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ReqLogin.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.account != null && message.hasOwnProperty("account"))
                if (!$util.isString(message.account))
                    return "account: string expected";
            if (message.token != null && message.hasOwnProperty("token"))
                if (!$util.isString(message.token))
                    return "token: string expected";
            if (message.nickname != null && message.hasOwnProperty("nickname"))
                if (!$util.isString(message.nickname))
                    return "nickname: string expected";
            if (message.sex != null && message.hasOwnProperty("sex"))
                if (!$util.isInteger(message.sex))
                    return "sex: integer expected";
            if (message.headimgurl != null && message.hasOwnProperty("headimgurl"))
                if (!$util.isString(message.headimgurl))
                    return "headimgurl: string expected";
            return null;
        };

        /**
         * Creates a ReqLogin message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.ReqLogin} ReqLogin
         */
        ReqLogin.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.ReqLogin)
                return object;
            var message = new $root.JhaoProto.ReqLogin();
            if (object.account != null)
                message.account = String(object.account);
            if (object.token != null)
                message.token = String(object.token);
            if (object.nickname != null)
                message.nickname = String(object.nickname);
            if (object.sex != null)
                message.sex = object.sex | 0;
            if (object.headimgurl != null)
                message.headimgurl = String(object.headimgurl);
            return message;
        };

        /**
         * Creates a plain object from a ReqLogin message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {JhaoProto.ReqLogin} message ReqLogin
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ReqLogin.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.account = "";
                object.token = "";
                object.nickname = "";
                object.sex = 0;
                object.headimgurl = "";
            }
            if (message.account != null && message.hasOwnProperty("account"))
                object.account = message.account;
            if (message.token != null && message.hasOwnProperty("token"))
                object.token = message.token;
            if (message.nickname != null && message.hasOwnProperty("nickname"))
                object.nickname = message.nickname;
            if (message.sex != null && message.hasOwnProperty("sex"))
                object.sex = message.sex;
            if (message.headimgurl != null && message.hasOwnProperty("headimgurl"))
                object.headimgurl = message.headimgurl;
            return object;
        };

        /**
         * Converts this ReqLogin to JSON.
         * @function toJSON
         * @memberof JhaoProto.ReqLogin
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ReqLogin.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ReqLogin
         * @function getTypeUrl
         * @memberof JhaoProto.ReqLogin
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ReqLogin.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.ReqLogin";
        };

        return ReqLogin;
    })();

    JhaoProto.RespLogin = (function() {

        /**
         * Properties of a RespLogin.
         * @memberof JhaoProto
         * @interface IRespLogin
         * @property {JhaoProto.IUserInfo|null} [userInfo] RespLogin userInfo
         */

        /**
         * Constructs a new RespLogin.
         * @memberof JhaoProto
         * @classdesc Represents a RespLogin.
         * @implements IRespLogin
         * @constructor
         * @param {JhaoProto.IRespLogin=} [properties] Properties to set
         */
        function RespLogin(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * RespLogin userInfo.
         * @member {JhaoProto.IUserInfo|null|undefined} userInfo
         * @memberof JhaoProto.RespLogin
         * @instance
         */
        RespLogin.prototype.userInfo = null;

        /**
         * Creates a new RespLogin instance using the specified properties.
         * @function create
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {JhaoProto.IRespLogin=} [properties] Properties to set
         * @returns {JhaoProto.RespLogin} RespLogin instance
         */
        RespLogin.create = function create(properties) {
            return new RespLogin(properties);
        };

        /**
         * Encodes the specified RespLogin message. Does not implicitly {@link JhaoProto.RespLogin.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {JhaoProto.IRespLogin} message RespLogin message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RespLogin.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.userInfo != null && Object.hasOwnProperty.call(message, "userInfo"))
                $root.JhaoProto.UserInfo.encode(message.userInfo, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified RespLogin message, length delimited. Does not implicitly {@link JhaoProto.RespLogin.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {JhaoProto.IRespLogin} message RespLogin message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RespLogin.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RespLogin message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.RespLogin} RespLogin
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RespLogin.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.RespLogin();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.userInfo = $root.JhaoProto.UserInfo.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a RespLogin message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.RespLogin} RespLogin
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RespLogin.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RespLogin message.
         * @function verify
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RespLogin.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.userInfo != null && message.hasOwnProperty("userInfo")) {
                var error = $root.JhaoProto.UserInfo.verify(message.userInfo);
                if (error)
                    return "userInfo." + error;
            }
            return null;
        };

        /**
         * Creates a RespLogin message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.RespLogin} RespLogin
         */
        RespLogin.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.RespLogin)
                return object;
            var message = new $root.JhaoProto.RespLogin();
            if (object.userInfo != null) {
                if (typeof object.userInfo !== "object")
                    throw TypeError(".JhaoProto.RespLogin.userInfo: object expected");
                message.userInfo = $root.JhaoProto.UserInfo.fromObject(object.userInfo);
            }
            return message;
        };

        /**
         * Creates a plain object from a RespLogin message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {JhaoProto.RespLogin} message RespLogin
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RespLogin.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.userInfo = null;
            if (message.userInfo != null && message.hasOwnProperty("userInfo"))
                object.userInfo = $root.JhaoProto.UserInfo.toObject(message.userInfo, options);
            return object;
        };

        /**
         * Converts this RespLogin to JSON.
         * @function toJSON
         * @memberof JhaoProto.RespLogin
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RespLogin.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RespLogin
         * @function getTypeUrl
         * @memberof JhaoProto.RespLogin
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RespLogin.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.RespLogin";
        };

        return RespLogin;
    })();

    JhaoProto.req_create_room = (function() {

        /**
         * Properties of a req_create_room.
         * @memberof JhaoProto
         * @interface Ireq_create_room
         * @property {number|null} [gameType] req_create_room gameType
         * @property {number|null} [roomType] req_create_room roomType
         * @property {number|null} [clubid] req_create_room clubid
         * @property {JhaoProto.IRoomConfigBase|null} [roomConfigBase] req_create_room roomConfigBase
         * @property {JhaoProto.IRoomConfigMj|null} [roomConfigMj] req_create_room roomConfigMj
         */

        /**
         * Constructs a new req_create_room.
         * @memberof JhaoProto
         * @classdesc Represents a req_create_room.
         * @implements Ireq_create_room
         * @constructor
         * @param {JhaoProto.Ireq_create_room=} [properties] Properties to set
         */
        function req_create_room(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_create_room gameType.
         * @member {number} gameType
         * @memberof JhaoProto.req_create_room
         * @instance
         */
        req_create_room.prototype.gameType = 0;

        /**
         * req_create_room roomType.
         * @member {number} roomType
         * @memberof JhaoProto.req_create_room
         * @instance
         */
        req_create_room.prototype.roomType = 0;

        /**
         * req_create_room clubid.
         * @member {number} clubid
         * @memberof JhaoProto.req_create_room
         * @instance
         */
        req_create_room.prototype.clubid = 0;

        /**
         * req_create_room roomConfigBase.
         * @member {JhaoProto.IRoomConfigBase|null|undefined} roomConfigBase
         * @memberof JhaoProto.req_create_room
         * @instance
         */
        req_create_room.prototype.roomConfigBase = null;

        /**
         * req_create_room roomConfigMj.
         * @member {JhaoProto.IRoomConfigMj|null|undefined} roomConfigMj
         * @memberof JhaoProto.req_create_room
         * @instance
         */
        req_create_room.prototype.roomConfigMj = null;

        /**
         * Creates a new req_create_room instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {JhaoProto.Ireq_create_room=} [properties] Properties to set
         * @returns {JhaoProto.req_create_room} req_create_room instance
         */
        req_create_room.create = function create(properties) {
            return new req_create_room(properties);
        };

        /**
         * Encodes the specified req_create_room message. Does not implicitly {@link JhaoProto.req_create_room.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {JhaoProto.Ireq_create_room} message req_create_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_create_room.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.gameType != null && Object.hasOwnProperty.call(message, "gameType"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.gameType);
            if (message.roomType != null && Object.hasOwnProperty.call(message, "roomType"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.roomType);
            if (message.clubid != null && Object.hasOwnProperty.call(message, "clubid"))
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.clubid);
            if (message.roomConfigBase != null && Object.hasOwnProperty.call(message, "roomConfigBase"))
                $root.JhaoProto.RoomConfigBase.encode(message.roomConfigBase, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
            if (message.roomConfigMj != null && Object.hasOwnProperty.call(message, "roomConfigMj"))
                $root.JhaoProto.RoomConfigMj.encode(message.roomConfigMj, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified req_create_room message, length delimited. Does not implicitly {@link JhaoProto.req_create_room.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {JhaoProto.Ireq_create_room} message req_create_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_create_room.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_create_room message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_create_room} req_create_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_create_room.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_create_room();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.gameType = reader.int32();
                        break;
                    }
                case 2: {
                        message.roomType = reader.int32();
                        break;
                    }
                case 3: {
                        message.clubid = reader.int32();
                        break;
                    }
                case 4: {
                        message.roomConfigBase = $root.JhaoProto.RoomConfigBase.decode(reader, reader.uint32());
                        break;
                    }
                case 5: {
                        message.roomConfigMj = $root.JhaoProto.RoomConfigMj.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_create_room message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_create_room} req_create_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_create_room.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_create_room message.
         * @function verify
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_create_room.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                if (!$util.isInteger(message.gameType))
                    return "gameType: integer expected";
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                if (!$util.isInteger(message.roomType))
                    return "roomType: integer expected";
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                if (!$util.isInteger(message.clubid))
                    return "clubid: integer expected";
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase")) {
                var error = $root.JhaoProto.RoomConfigBase.verify(message.roomConfigBase);
                if (error)
                    return "roomConfigBase." + error;
            }
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj")) {
                var error = $root.JhaoProto.RoomConfigMj.verify(message.roomConfigMj);
                if (error)
                    return "roomConfigMj." + error;
            }
            return null;
        };

        /**
         * Creates a req_create_room message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_create_room} req_create_room
         */
        req_create_room.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_create_room)
                return object;
            var message = new $root.JhaoProto.req_create_room();
            if (object.gameType != null)
                message.gameType = object.gameType | 0;
            if (object.roomType != null)
                message.roomType = object.roomType | 0;
            if (object.clubid != null)
                message.clubid = object.clubid | 0;
            if (object.roomConfigBase != null) {
                if (typeof object.roomConfigBase !== "object")
                    throw TypeError(".JhaoProto.req_create_room.roomConfigBase: object expected");
                message.roomConfigBase = $root.JhaoProto.RoomConfigBase.fromObject(object.roomConfigBase);
            }
            if (object.roomConfigMj != null) {
                if (typeof object.roomConfigMj !== "object")
                    throw TypeError(".JhaoProto.req_create_room.roomConfigMj: object expected");
                message.roomConfigMj = $root.JhaoProto.RoomConfigMj.fromObject(object.roomConfigMj);
            }
            return message;
        };

        /**
         * Creates a plain object from a req_create_room message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {JhaoProto.req_create_room} message req_create_room
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_create_room.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.gameType = 0;
                object.roomType = 0;
                object.clubid = 0;
                object.roomConfigBase = null;
                object.roomConfigMj = null;
            }
            if (message.gameType != null && message.hasOwnProperty("gameType"))
                object.gameType = message.gameType;
            if (message.roomType != null && message.hasOwnProperty("roomType"))
                object.roomType = message.roomType;
            if (message.clubid != null && message.hasOwnProperty("clubid"))
                object.clubid = message.clubid;
            if (message.roomConfigBase != null && message.hasOwnProperty("roomConfigBase"))
                object.roomConfigBase = $root.JhaoProto.RoomConfigBase.toObject(message.roomConfigBase, options);
            if (message.roomConfigMj != null && message.hasOwnProperty("roomConfigMj"))
                object.roomConfigMj = $root.JhaoProto.RoomConfigMj.toObject(message.roomConfigMj, options);
            return object;
        };

        /**
         * Converts this req_create_room to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_create_room
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_create_room.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_create_room
         * @function getTypeUrl
         * @memberof JhaoProto.req_create_room
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_create_room.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_create_room";
        };

        return req_create_room;
    })();

    JhaoProto.resp_create_room = (function() {

        /**
         * Properties of a resp_create_room.
         * @memberof JhaoProto
         * @interface Iresp_create_room
         * @property {JhaoProto.IRoomModel|null} [room] resp_create_room room
         * @property {JhaoProto.IServerInfo|null} [server] resp_create_room server
         */

        /**
         * Constructs a new resp_create_room.
         * @memberof JhaoProto
         * @classdesc Represents a resp_create_room.
         * @implements Iresp_create_room
         * @constructor
         * @param {JhaoProto.Iresp_create_room=} [properties] Properties to set
         */
        function resp_create_room(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_create_room room.
         * @member {JhaoProto.IRoomModel|null|undefined} room
         * @memberof JhaoProto.resp_create_room
         * @instance
         */
        resp_create_room.prototype.room = null;

        /**
         * resp_create_room server.
         * @member {JhaoProto.IServerInfo|null|undefined} server
         * @memberof JhaoProto.resp_create_room
         * @instance
         */
        resp_create_room.prototype.server = null;

        /**
         * Creates a new resp_create_room instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {JhaoProto.Iresp_create_room=} [properties] Properties to set
         * @returns {JhaoProto.resp_create_room} resp_create_room instance
         */
        resp_create_room.create = function create(properties) {
            return new resp_create_room(properties);
        };

        /**
         * Encodes the specified resp_create_room message. Does not implicitly {@link JhaoProto.resp_create_room.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {JhaoProto.Iresp_create_room} message resp_create_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_create_room.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.room != null && Object.hasOwnProperty.call(message, "room"))
                $root.JhaoProto.RoomModel.encode(message.room, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            if (message.server != null && Object.hasOwnProperty.call(message, "server"))
                $root.JhaoProto.ServerInfo.encode(message.server, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified resp_create_room message, length delimited. Does not implicitly {@link JhaoProto.resp_create_room.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {JhaoProto.Iresp_create_room} message resp_create_room message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_create_room.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_create_room message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_create_room} resp_create_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_create_room.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_create_room();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.room = $root.JhaoProto.RoomModel.decode(reader, reader.uint32());
                        break;
                    }
                case 2: {
                        message.server = $root.JhaoProto.ServerInfo.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_create_room message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_create_room} resp_create_room
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_create_room.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_create_room message.
         * @function verify
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_create_room.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.room != null && message.hasOwnProperty("room")) {
                var error = $root.JhaoProto.RoomModel.verify(message.room);
                if (error)
                    return "room." + error;
            }
            if (message.server != null && message.hasOwnProperty("server")) {
                var error = $root.JhaoProto.ServerInfo.verify(message.server);
                if (error)
                    return "server." + error;
            }
            return null;
        };

        /**
         * Creates a resp_create_room message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_create_room} resp_create_room
         */
        resp_create_room.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_create_room)
                return object;
            var message = new $root.JhaoProto.resp_create_room();
            if (object.room != null) {
                if (typeof object.room !== "object")
                    throw TypeError(".JhaoProto.resp_create_room.room: object expected");
                message.room = $root.JhaoProto.RoomModel.fromObject(object.room);
            }
            if (object.server != null) {
                if (typeof object.server !== "object")
                    throw TypeError(".JhaoProto.resp_create_room.server: object expected");
                message.server = $root.JhaoProto.ServerInfo.fromObject(object.server);
            }
            return message;
        };

        /**
         * Creates a plain object from a resp_create_room message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {JhaoProto.resp_create_room} message resp_create_room
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_create_room.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.room = null;
                object.server = null;
            }
            if (message.room != null && message.hasOwnProperty("room"))
                object.room = $root.JhaoProto.RoomModel.toObject(message.room, options);
            if (message.server != null && message.hasOwnProperty("server"))
                object.server = $root.JhaoProto.ServerInfo.toObject(message.server, options);
            return object;
        };

        /**
         * Converts this resp_create_room to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_create_room
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_create_room.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_create_room
         * @function getTypeUrl
         * @memberof JhaoProto.resp_create_room
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_create_room.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_create_room";
        };

        return resp_create_room;
    })();

    JhaoProto.req_server_internal_Login = (function() {

        /**
         * Properties of a req_server_internal_Login.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_Login
         * @property {string|null} [account] req_server_internal_Login account
         * @property {string|null} [pass] req_server_internal_Login pass
         */

        /**
         * Constructs a new req_server_internal_Login.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_Login.
         * @implements Ireq_server_internal_Login
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_Login=} [properties] Properties to set
         */
        function req_server_internal_Login(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_server_internal_Login account.
         * @member {string} account
         * @memberof JhaoProto.req_server_internal_Login
         * @instance
         */
        req_server_internal_Login.prototype.account = "";

        /**
         * req_server_internal_Login pass.
         * @member {string} pass
         * @memberof JhaoProto.req_server_internal_Login
         * @instance
         */
        req_server_internal_Login.prototype.pass = "";

        /**
         * Creates a new req_server_internal_Login instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {JhaoProto.Ireq_server_internal_Login=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_Login} req_server_internal_Login instance
         */
        req_server_internal_Login.create = function create(properties) {
            return new req_server_internal_Login(properties);
        };

        /**
         * Encodes the specified req_server_internal_Login message. Does not implicitly {@link JhaoProto.req_server_internal_Login.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {JhaoProto.Ireq_server_internal_Login} message req_server_internal_Login message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_Login.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.account != null && Object.hasOwnProperty.call(message, "account"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.account);
            if (message.pass != null && Object.hasOwnProperty.call(message, "pass"))
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.pass);
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_Login message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_Login.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {JhaoProto.Ireq_server_internal_Login} message req_server_internal_Login message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_Login.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_Login message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_Login} req_server_internal_Login
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_Login.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_Login();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.account = reader.string();
                        break;
                    }
                case 2: {
                        message.pass = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_Login message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_Login} req_server_internal_Login
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_Login.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_Login message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_Login.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.account != null && message.hasOwnProperty("account"))
                if (!$util.isString(message.account))
                    return "account: string expected";
            if (message.pass != null && message.hasOwnProperty("pass"))
                if (!$util.isString(message.pass))
                    return "pass: string expected";
            return null;
        };

        /**
         * Creates a req_server_internal_Login message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_Login} req_server_internal_Login
         */
        req_server_internal_Login.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_Login)
                return object;
            var message = new $root.JhaoProto.req_server_internal_Login();
            if (object.account != null)
                message.account = String(object.account);
            if (object.pass != null)
                message.pass = String(object.pass);
            return message;
        };

        /**
         * Creates a plain object from a req_server_internal_Login message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {JhaoProto.req_server_internal_Login} message req_server_internal_Login
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_Login.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.account = "";
                object.pass = "";
            }
            if (message.account != null && message.hasOwnProperty("account"))
                object.account = message.account;
            if (message.pass != null && message.hasOwnProperty("pass"))
                object.pass = message.pass;
            return object;
        };

        /**
         * Converts this req_server_internal_Login to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_Login
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_Login.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_Login
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_Login
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_Login.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_Login";
        };

        return req_server_internal_Login;
    })();

    JhaoProto.resp_server_internal_Login = (function() {

        /**
         * Properties of a resp_server_internal_Login.
         * @memberof JhaoProto
         * @interface Iresp_server_internal_Login
         */

        /**
         * Constructs a new resp_server_internal_Login.
         * @memberof JhaoProto
         * @classdesc Represents a resp_server_internal_Login.
         * @implements Iresp_server_internal_Login
         * @constructor
         * @param {JhaoProto.Iresp_server_internal_Login=} [properties] Properties to set
         */
        function resp_server_internal_Login(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_server_internal_Login instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {JhaoProto.Iresp_server_internal_Login=} [properties] Properties to set
         * @returns {JhaoProto.resp_server_internal_Login} resp_server_internal_Login instance
         */
        resp_server_internal_Login.create = function create(properties) {
            return new resp_server_internal_Login(properties);
        };

        /**
         * Encodes the specified resp_server_internal_Login message. Does not implicitly {@link JhaoProto.resp_server_internal_Login.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {JhaoProto.Iresp_server_internal_Login} message resp_server_internal_Login message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_Login.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_server_internal_Login message, length delimited. Does not implicitly {@link JhaoProto.resp_server_internal_Login.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {JhaoProto.Iresp_server_internal_Login} message resp_server_internal_Login message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_Login.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_server_internal_Login message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_server_internal_Login} resp_server_internal_Login
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_Login.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_server_internal_Login();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_server_internal_Login message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_server_internal_Login} resp_server_internal_Login
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_Login.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_server_internal_Login message.
         * @function verify
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_server_internal_Login.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_server_internal_Login message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_server_internal_Login} resp_server_internal_Login
         */
        resp_server_internal_Login.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_server_internal_Login)
                return object;
            return new $root.JhaoProto.resp_server_internal_Login();
        };

        /**
         * Creates a plain object from a resp_server_internal_Login message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {JhaoProto.resp_server_internal_Login} message resp_server_internal_Login
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_server_internal_Login.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_server_internal_Login to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_server_internal_Login
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_server_internal_Login.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_server_internal_Login
         * @function getTypeUrl
         * @memberof JhaoProto.resp_server_internal_Login
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_server_internal_Login.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_server_internal_Login";
        };

        return resp_server_internal_Login;
    })();

    JhaoProto.req_server_internal_kill_all_users = (function() {

        /**
         * Properties of a req_server_internal_kill_all_users.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_kill_all_users
         */

        /**
         * Constructs a new req_server_internal_kill_all_users.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_kill_all_users.
         * @implements Ireq_server_internal_kill_all_users
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_kill_all_users=} [properties] Properties to set
         */
        function req_server_internal_kill_all_users(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new req_server_internal_kill_all_users instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {JhaoProto.Ireq_server_internal_kill_all_users=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_kill_all_users} req_server_internal_kill_all_users instance
         */
        req_server_internal_kill_all_users.create = function create(properties) {
            return new req_server_internal_kill_all_users(properties);
        };

        /**
         * Encodes the specified req_server_internal_kill_all_users message. Does not implicitly {@link JhaoProto.req_server_internal_kill_all_users.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {JhaoProto.Ireq_server_internal_kill_all_users} message req_server_internal_kill_all_users message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_kill_all_users.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_kill_all_users message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_kill_all_users.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {JhaoProto.Ireq_server_internal_kill_all_users} message req_server_internal_kill_all_users message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_kill_all_users.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_kill_all_users message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_kill_all_users} req_server_internal_kill_all_users
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_kill_all_users.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_kill_all_users();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_kill_all_users message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_kill_all_users} req_server_internal_kill_all_users
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_kill_all_users.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_kill_all_users message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_kill_all_users.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a req_server_internal_kill_all_users message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_kill_all_users} req_server_internal_kill_all_users
         */
        req_server_internal_kill_all_users.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_kill_all_users)
                return object;
            return new $root.JhaoProto.req_server_internal_kill_all_users();
        };

        /**
         * Creates a plain object from a req_server_internal_kill_all_users message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {JhaoProto.req_server_internal_kill_all_users} message req_server_internal_kill_all_users
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_kill_all_users.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this req_server_internal_kill_all_users to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_kill_all_users.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_kill_all_users
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_kill_all_users
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_kill_all_users.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_kill_all_users";
        };

        return req_server_internal_kill_all_users;
    })();

    JhaoProto.req_server_internal_set_server_status = (function() {

        /**
         * Properties of a req_server_internal_set_server_status.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_set_server_status
         * @property {number|null} [status] req_server_internal_set_server_status status
         */

        /**
         * Constructs a new req_server_internal_set_server_status.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_set_server_status.
         * @implements Ireq_server_internal_set_server_status
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_set_server_status=} [properties] Properties to set
         */
        function req_server_internal_set_server_status(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_server_internal_set_server_status status.
         * @member {number} status
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @instance
         */
        req_server_internal_set_server_status.prototype.status = 0;

        /**
         * Creates a new req_server_internal_set_server_status instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {JhaoProto.Ireq_server_internal_set_server_status=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_set_server_status} req_server_internal_set_server_status instance
         */
        req_server_internal_set_server_status.create = function create(properties) {
            return new req_server_internal_set_server_status(properties);
        };

        /**
         * Encodes the specified req_server_internal_set_server_status message. Does not implicitly {@link JhaoProto.req_server_internal_set_server_status.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {JhaoProto.Ireq_server_internal_set_server_status} message req_server_internal_set_server_status message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_set_server_status.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.status != null && Object.hasOwnProperty.call(message, "status"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.status);
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_set_server_status message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_set_server_status.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {JhaoProto.Ireq_server_internal_set_server_status} message req_server_internal_set_server_status message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_set_server_status.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_set_server_status message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_set_server_status} req_server_internal_set_server_status
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_set_server_status.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_set_server_status();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.status = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_set_server_status message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_set_server_status} req_server_internal_set_server_status
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_set_server_status.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_set_server_status message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_set_server_status.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.status != null && message.hasOwnProperty("status"))
                if (!$util.isInteger(message.status))
                    return "status: integer expected";
            return null;
        };

        /**
         * Creates a req_server_internal_set_server_status message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_set_server_status} req_server_internal_set_server_status
         */
        req_server_internal_set_server_status.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_set_server_status)
                return object;
            var message = new $root.JhaoProto.req_server_internal_set_server_status();
            if (object.status != null)
                message.status = object.status | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_server_internal_set_server_status message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {JhaoProto.req_server_internal_set_server_status} message req_server_internal_set_server_status
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_set_server_status.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.status = 0;
            if (message.status != null && message.hasOwnProperty("status"))
                object.status = message.status;
            return object;
        };

        /**
         * Converts this req_server_internal_set_server_status to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_set_server_status.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_set_server_status
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_set_server_status
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_set_server_status.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_set_server_status";
        };

        return req_server_internal_set_server_status;
    })();

    JhaoProto.req_server_internal_get_server_status = (function() {

        /**
         * Properties of a req_server_internal_get_server_status.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_get_server_status
         */

        /**
         * Constructs a new req_server_internal_get_server_status.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_get_server_status.
         * @implements Ireq_server_internal_get_server_status
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_get_server_status=} [properties] Properties to set
         */
        function req_server_internal_get_server_status(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new req_server_internal_get_server_status instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {JhaoProto.Ireq_server_internal_get_server_status=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_get_server_status} req_server_internal_get_server_status instance
         */
        req_server_internal_get_server_status.create = function create(properties) {
            return new req_server_internal_get_server_status(properties);
        };

        /**
         * Encodes the specified req_server_internal_get_server_status message. Does not implicitly {@link JhaoProto.req_server_internal_get_server_status.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {JhaoProto.Ireq_server_internal_get_server_status} message req_server_internal_get_server_status message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_get_server_status.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_get_server_status message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_get_server_status.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {JhaoProto.Ireq_server_internal_get_server_status} message req_server_internal_get_server_status message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_get_server_status.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_get_server_status message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_get_server_status} req_server_internal_get_server_status
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_get_server_status.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_get_server_status();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_get_server_status message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_get_server_status} req_server_internal_get_server_status
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_get_server_status.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_get_server_status message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_get_server_status.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a req_server_internal_get_server_status message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_get_server_status} req_server_internal_get_server_status
         */
        req_server_internal_get_server_status.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_get_server_status)
                return object;
            return new $root.JhaoProto.req_server_internal_get_server_status();
        };

        /**
         * Creates a plain object from a req_server_internal_get_server_status message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {JhaoProto.req_server_internal_get_server_status} message req_server_internal_get_server_status
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_get_server_status.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this req_server_internal_get_server_status to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_get_server_status.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_get_server_status
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_get_server_status
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_get_server_status.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_get_server_status";
        };

        return req_server_internal_get_server_status;
    })();

    JhaoProto.resp_server_internal_get_server_status = (function() {

        /**
         * Properties of a resp_server_internal_get_server_status.
         * @memberof JhaoProto
         * @interface Iresp_server_internal_get_server_status
         * @property {number|null} [status] resp_server_internal_get_server_status status
         */

        /**
         * Constructs a new resp_server_internal_get_server_status.
         * @memberof JhaoProto
         * @classdesc Represents a resp_server_internal_get_server_status.
         * @implements Iresp_server_internal_get_server_status
         * @constructor
         * @param {JhaoProto.Iresp_server_internal_get_server_status=} [properties] Properties to set
         */
        function resp_server_internal_get_server_status(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_server_internal_get_server_status status.
         * @member {number} status
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @instance
         */
        resp_server_internal_get_server_status.prototype.status = 0;

        /**
         * Creates a new resp_server_internal_get_server_status instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {JhaoProto.Iresp_server_internal_get_server_status=} [properties] Properties to set
         * @returns {JhaoProto.resp_server_internal_get_server_status} resp_server_internal_get_server_status instance
         */
        resp_server_internal_get_server_status.create = function create(properties) {
            return new resp_server_internal_get_server_status(properties);
        };

        /**
         * Encodes the specified resp_server_internal_get_server_status message. Does not implicitly {@link JhaoProto.resp_server_internal_get_server_status.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {JhaoProto.Iresp_server_internal_get_server_status} message resp_server_internal_get_server_status message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_get_server_status.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.status != null && Object.hasOwnProperty.call(message, "status"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.status);
            return writer;
        };

        /**
         * Encodes the specified resp_server_internal_get_server_status message, length delimited. Does not implicitly {@link JhaoProto.resp_server_internal_get_server_status.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {JhaoProto.Iresp_server_internal_get_server_status} message resp_server_internal_get_server_status message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_get_server_status.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_server_internal_get_server_status message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_server_internal_get_server_status} resp_server_internal_get_server_status
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_get_server_status.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_server_internal_get_server_status();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.status = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_server_internal_get_server_status message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_server_internal_get_server_status} resp_server_internal_get_server_status
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_get_server_status.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_server_internal_get_server_status message.
         * @function verify
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_server_internal_get_server_status.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.status != null && message.hasOwnProperty("status"))
                if (!$util.isInteger(message.status))
                    return "status: integer expected";
            return null;
        };

        /**
         * Creates a resp_server_internal_get_server_status message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_server_internal_get_server_status} resp_server_internal_get_server_status
         */
        resp_server_internal_get_server_status.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_server_internal_get_server_status)
                return object;
            var message = new $root.JhaoProto.resp_server_internal_get_server_status();
            if (object.status != null)
                message.status = object.status | 0;
            return message;
        };

        /**
         * Creates a plain object from a resp_server_internal_get_server_status message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {JhaoProto.resp_server_internal_get_server_status} message resp_server_internal_get_server_status
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_server_internal_get_server_status.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.status = 0;
            if (message.status != null && message.hasOwnProperty("status"))
                object.status = message.status;
            return object;
        };

        /**
         * Converts this resp_server_internal_get_server_status to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_server_internal_get_server_status.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_server_internal_get_server_status
         * @function getTypeUrl
         * @memberof JhaoProto.resp_server_internal_get_server_status
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_server_internal_get_server_status.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_server_internal_get_server_status";
        };

        return resp_server_internal_get_server_status;
    })();

    JhaoProto.req_server_internal_update_online = (function() {

        /**
         * Properties of a req_server_internal_update_online.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_update_online
         * @property {Array.<number|Long>|null} [userids] req_server_internal_update_online userids
         * @property {number|null} [serverId] req_server_internal_update_online serverId
         * @property {string|null} [serverType] req_server_internal_update_online serverType
         */

        /**
         * Constructs a new req_server_internal_update_online.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_update_online.
         * @implements Ireq_server_internal_update_online
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_update_online=} [properties] Properties to set
         */
        function req_server_internal_update_online(properties) {
            this.userids = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_server_internal_update_online userids.
         * @member {Array.<number|Long>} userids
         * @memberof JhaoProto.req_server_internal_update_online
         * @instance
         */
        req_server_internal_update_online.prototype.userids = $util.emptyArray;

        /**
         * req_server_internal_update_online serverId.
         * @member {number} serverId
         * @memberof JhaoProto.req_server_internal_update_online
         * @instance
         */
        req_server_internal_update_online.prototype.serverId = 0;

        /**
         * req_server_internal_update_online serverType.
         * @member {string} serverType
         * @memberof JhaoProto.req_server_internal_update_online
         * @instance
         */
        req_server_internal_update_online.prototype.serverType = "";

        /**
         * Creates a new req_server_internal_update_online instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {JhaoProto.Ireq_server_internal_update_online=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_update_online} req_server_internal_update_online instance
         */
        req_server_internal_update_online.create = function create(properties) {
            return new req_server_internal_update_online(properties);
        };

        /**
         * Encodes the specified req_server_internal_update_online message. Does not implicitly {@link JhaoProto.req_server_internal_update_online.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {JhaoProto.Ireq_server_internal_update_online} message req_server_internal_update_online message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_update_online.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.userids != null && message.userids.length) {
                writer.uint32(/* id 1, wireType 2 =*/10).fork();
                for (var i = 0; i < message.userids.length; ++i)
                    writer.int64(message.userids[i]);
                writer.ldelim();
            }
            if (message.serverId != null && Object.hasOwnProperty.call(message, "serverId"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.serverId);
            if (message.serverType != null && Object.hasOwnProperty.call(message, "serverType"))
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.serverType);
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_update_online message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_update_online.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {JhaoProto.Ireq_server_internal_update_online} message req_server_internal_update_online message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_update_online.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_update_online message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_update_online} req_server_internal_update_online
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_update_online.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_update_online();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        if (!(message.userids && message.userids.length))
                            message.userids = [];
                        if ((tag & 7) === 2) {
                            var end2 = reader.uint32() + reader.pos;
                            while (reader.pos < end2)
                                message.userids.push(reader.int64());
                        } else
                            message.userids.push(reader.int64());
                        break;
                    }
                case 2: {
                        message.serverId = reader.int32();
                        break;
                    }
                case 3: {
                        message.serverType = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_update_online message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_update_online} req_server_internal_update_online
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_update_online.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_update_online message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_update_online.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.userids != null && message.hasOwnProperty("userids")) {
                if (!Array.isArray(message.userids))
                    return "userids: array expected";
                for (var i = 0; i < message.userids.length; ++i)
                    if (!$util.isInteger(message.userids[i]) && !(message.userids[i] && $util.isInteger(message.userids[i].low) && $util.isInteger(message.userids[i].high)))
                        return "userids: integer|Long[] expected";
            }
            if (message.serverId != null && message.hasOwnProperty("serverId"))
                if (!$util.isInteger(message.serverId))
                    return "serverId: integer expected";
            if (message.serverType != null && message.hasOwnProperty("serverType"))
                if (!$util.isString(message.serverType))
                    return "serverType: string expected";
            return null;
        };

        /**
         * Creates a req_server_internal_update_online message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_update_online} req_server_internal_update_online
         */
        req_server_internal_update_online.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_update_online)
                return object;
            var message = new $root.JhaoProto.req_server_internal_update_online();
            if (object.userids) {
                if (!Array.isArray(object.userids))
                    throw TypeError(".JhaoProto.req_server_internal_update_online.userids: array expected");
                message.userids = [];
                for (var i = 0; i < object.userids.length; ++i)
                    if ($util.Long)
                        (message.userids[i] = $util.Long.fromValue(object.userids[i])).unsigned = false;
                    else if (typeof object.userids[i] === "string")
                        message.userids[i] = parseInt(object.userids[i], 10);
                    else if (typeof object.userids[i] === "number")
                        message.userids[i] = object.userids[i];
                    else if (typeof object.userids[i] === "object")
                        message.userids[i] = new $util.LongBits(object.userids[i].low >>> 0, object.userids[i].high >>> 0).toNumber();
            }
            if (object.serverId != null)
                message.serverId = object.serverId | 0;
            if (object.serverType != null)
                message.serverType = String(object.serverType);
            return message;
        };

        /**
         * Creates a plain object from a req_server_internal_update_online message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {JhaoProto.req_server_internal_update_online} message req_server_internal_update_online
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_update_online.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.arrays || options.defaults)
                object.userids = [];
            if (options.defaults) {
                object.serverId = 0;
                object.serverType = "";
            }
            if (message.userids && message.userids.length) {
                object.userids = [];
                for (var j = 0; j < message.userids.length; ++j)
                    if (typeof message.userids[j] === "number")
                        object.userids[j] = options.longs === String ? String(message.userids[j]) : message.userids[j];
                    else
                        object.userids[j] = options.longs === String ? $util.Long.prototype.toString.call(message.userids[j]) : options.longs === Number ? new $util.LongBits(message.userids[j].low >>> 0, message.userids[j].high >>> 0).toNumber() : message.userids[j];
            }
            if (message.serverId != null && message.hasOwnProperty("serverId"))
                object.serverId = message.serverId;
            if (message.serverType != null && message.hasOwnProperty("serverType"))
                object.serverType = message.serverType;
            return object;
        };

        /**
         * Converts this req_server_internal_update_online to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_update_online
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_update_online.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_update_online
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_update_online
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_update_online.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_update_online";
        };

        return req_server_internal_update_online;
    })();

    JhaoProto.req_server_internal_is_in_server = (function() {

        /**
         * Properties of a req_server_internal_is_in_server.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_is_in_server
         * @property {string|null} [account] req_server_internal_is_in_server account
         */

        /**
         * Constructs a new req_server_internal_is_in_server.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_is_in_server.
         * @implements Ireq_server_internal_is_in_server
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_is_in_server=} [properties] Properties to set
         */
        function req_server_internal_is_in_server(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_server_internal_is_in_server account.
         * @member {string} account
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @instance
         */
        req_server_internal_is_in_server.prototype.account = "";

        /**
         * Creates a new req_server_internal_is_in_server instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {JhaoProto.Ireq_server_internal_is_in_server=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_is_in_server} req_server_internal_is_in_server instance
         */
        req_server_internal_is_in_server.create = function create(properties) {
            return new req_server_internal_is_in_server(properties);
        };

        /**
         * Encodes the specified req_server_internal_is_in_server message. Does not implicitly {@link JhaoProto.req_server_internal_is_in_server.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {JhaoProto.Ireq_server_internal_is_in_server} message req_server_internal_is_in_server message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_is_in_server.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.account != null && Object.hasOwnProperty.call(message, "account"))
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.account);
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_is_in_server message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_is_in_server.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {JhaoProto.Ireq_server_internal_is_in_server} message req_server_internal_is_in_server message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_is_in_server.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_is_in_server message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_is_in_server} req_server_internal_is_in_server
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_is_in_server.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_is_in_server();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.account = reader.string();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_is_in_server message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_is_in_server} req_server_internal_is_in_server
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_is_in_server.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_is_in_server message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_is_in_server.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.account != null && message.hasOwnProperty("account"))
                if (!$util.isString(message.account))
                    return "account: string expected";
            return null;
        };

        /**
         * Creates a req_server_internal_is_in_server message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_is_in_server} req_server_internal_is_in_server
         */
        req_server_internal_is_in_server.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_is_in_server)
                return object;
            var message = new $root.JhaoProto.req_server_internal_is_in_server();
            if (object.account != null)
                message.account = String(object.account);
            return message;
        };

        /**
         * Creates a plain object from a req_server_internal_is_in_server message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {JhaoProto.req_server_internal_is_in_server} message req_server_internal_is_in_server
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_is_in_server.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.account = "";
            if (message.account != null && message.hasOwnProperty("account"))
                object.account = message.account;
            return object;
        };

        /**
         * Converts this req_server_internal_is_in_server to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_is_in_server.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_is_in_server
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_is_in_server
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_is_in_server.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_is_in_server";
        };

        return req_server_internal_is_in_server;
    })();

    JhaoProto.resp_server_internal_is_in_server = (function() {

        /**
         * Properties of a resp_server_internal_is_in_server.
         * @memberof JhaoProto
         * @interface Iresp_server_internal_is_in_server
         * @property {boolean|null} [isIn] resp_server_internal_is_in_server isIn
         */

        /**
         * Constructs a new resp_server_internal_is_in_server.
         * @memberof JhaoProto
         * @classdesc Represents a resp_server_internal_is_in_server.
         * @implements Iresp_server_internal_is_in_server
         * @constructor
         * @param {JhaoProto.Iresp_server_internal_is_in_server=} [properties] Properties to set
         */
        function resp_server_internal_is_in_server(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_server_internal_is_in_server isIn.
         * @member {boolean} isIn
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @instance
         */
        resp_server_internal_is_in_server.prototype.isIn = false;

        /**
         * Creates a new resp_server_internal_is_in_server instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {JhaoProto.Iresp_server_internal_is_in_server=} [properties] Properties to set
         * @returns {JhaoProto.resp_server_internal_is_in_server} resp_server_internal_is_in_server instance
         */
        resp_server_internal_is_in_server.create = function create(properties) {
            return new resp_server_internal_is_in_server(properties);
        };

        /**
         * Encodes the specified resp_server_internal_is_in_server message. Does not implicitly {@link JhaoProto.resp_server_internal_is_in_server.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {JhaoProto.Iresp_server_internal_is_in_server} message resp_server_internal_is_in_server message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_is_in_server.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.isIn != null && Object.hasOwnProperty.call(message, "isIn"))
                writer.uint32(/* id 1, wireType 0 =*/8).bool(message.isIn);
            return writer;
        };

        /**
         * Encodes the specified resp_server_internal_is_in_server message, length delimited. Does not implicitly {@link JhaoProto.resp_server_internal_is_in_server.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {JhaoProto.Iresp_server_internal_is_in_server} message resp_server_internal_is_in_server message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_is_in_server.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_server_internal_is_in_server message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_server_internal_is_in_server} resp_server_internal_is_in_server
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_is_in_server.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_server_internal_is_in_server();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.isIn = reader.bool();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_server_internal_is_in_server message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_server_internal_is_in_server} resp_server_internal_is_in_server
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_is_in_server.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_server_internal_is_in_server message.
         * @function verify
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_server_internal_is_in_server.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.isIn != null && message.hasOwnProperty("isIn"))
                if (typeof message.isIn !== "boolean")
                    return "isIn: boolean expected";
            return null;
        };

        /**
         * Creates a resp_server_internal_is_in_server message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_server_internal_is_in_server} resp_server_internal_is_in_server
         */
        resp_server_internal_is_in_server.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_server_internal_is_in_server)
                return object;
            var message = new $root.JhaoProto.resp_server_internal_is_in_server();
            if (object.isIn != null)
                message.isIn = Boolean(object.isIn);
            return message;
        };

        /**
         * Creates a plain object from a resp_server_internal_is_in_server message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {JhaoProto.resp_server_internal_is_in_server} message resp_server_internal_is_in_server
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_server_internal_is_in_server.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.isIn = false;
            if (message.isIn != null && message.hasOwnProperty("isIn"))
                object.isIn = message.isIn;
            return object;
        };

        /**
         * Converts this resp_server_internal_is_in_server to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_server_internal_is_in_server.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_server_internal_is_in_server
         * @function getTypeUrl
         * @memberof JhaoProto.resp_server_internal_is_in_server
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_server_internal_is_in_server.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_server_internal_is_in_server";
        };

        return resp_server_internal_is_in_server;
    })();

    JhaoProto.req_server_internal_is_user_online = (function() {

        /**
         * Properties of a req_server_internal_is_user_online.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_is_user_online
         * @property {number|Long|null} [userid] req_server_internal_is_user_online userid
         */

        /**
         * Constructs a new req_server_internal_is_user_online.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_is_user_online.
         * @implements Ireq_server_internal_is_user_online
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_is_user_online=} [properties] Properties to set
         */
        function req_server_internal_is_user_online(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_server_internal_is_user_online userid.
         * @member {number|Long} userid
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @instance
         */
        req_server_internal_is_user_online.prototype.userid = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Creates a new req_server_internal_is_user_online instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {JhaoProto.Ireq_server_internal_is_user_online=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_is_user_online} req_server_internal_is_user_online instance
         */
        req_server_internal_is_user_online.create = function create(properties) {
            return new req_server_internal_is_user_online(properties);
        };

        /**
         * Encodes the specified req_server_internal_is_user_online message. Does not implicitly {@link JhaoProto.req_server_internal_is_user_online.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {JhaoProto.Ireq_server_internal_is_user_online} message req_server_internal_is_user_online message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_is_user_online.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.userid != null && Object.hasOwnProperty.call(message, "userid"))
                writer.uint32(/* id 1, wireType 0 =*/8).int64(message.userid);
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_is_user_online message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_is_user_online.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {JhaoProto.Ireq_server_internal_is_user_online} message req_server_internal_is_user_online message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_is_user_online.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_is_user_online message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_is_user_online} req_server_internal_is_user_online
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_is_user_online.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_is_user_online();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.userid = reader.int64();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_is_user_online message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_is_user_online} req_server_internal_is_user_online
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_is_user_online.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_is_user_online message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_is_user_online.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (!$util.isInteger(message.userid) && !(message.userid && $util.isInteger(message.userid.low) && $util.isInteger(message.userid.high)))
                    return "userid: integer|Long expected";
            return null;
        };

        /**
         * Creates a req_server_internal_is_user_online message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_is_user_online} req_server_internal_is_user_online
         */
        req_server_internal_is_user_online.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_is_user_online)
                return object;
            var message = new $root.JhaoProto.req_server_internal_is_user_online();
            if (object.userid != null)
                if ($util.Long)
                    (message.userid = $util.Long.fromValue(object.userid)).unsigned = false;
                else if (typeof object.userid === "string")
                    message.userid = parseInt(object.userid, 10);
                else if (typeof object.userid === "number")
                    message.userid = object.userid;
                else if (typeof object.userid === "object")
                    message.userid = new $util.LongBits(object.userid.low >>> 0, object.userid.high >>> 0).toNumber();
            return message;
        };

        /**
         * Creates a plain object from a req_server_internal_is_user_online message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {JhaoProto.req_server_internal_is_user_online} message req_server_internal_is_user_online
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_is_user_online.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.userid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.userid = options.longs === String ? "0" : 0;
            if (message.userid != null && message.hasOwnProperty("userid"))
                if (typeof message.userid === "number")
                    object.userid = options.longs === String ? String(message.userid) : message.userid;
                else
                    object.userid = options.longs === String ? $util.Long.prototype.toString.call(message.userid) : options.longs === Number ? new $util.LongBits(message.userid.low >>> 0, message.userid.high >>> 0).toNumber() : message.userid;
            return object;
        };

        /**
         * Converts this req_server_internal_is_user_online to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_is_user_online.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_is_user_online
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_is_user_online
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_is_user_online.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_is_user_online";
        };

        return req_server_internal_is_user_online;
    })();

    JhaoProto.resp_server_internal_is_user_online = (function() {

        /**
         * Properties of a resp_server_internal_is_user_online.
         * @memberof JhaoProto
         * @interface Iresp_server_internal_is_user_online
         * @property {boolean|null} [isOnline] resp_server_internal_is_user_online isOnline
         */

        /**
         * Constructs a new resp_server_internal_is_user_online.
         * @memberof JhaoProto
         * @classdesc Represents a resp_server_internal_is_user_online.
         * @implements Iresp_server_internal_is_user_online
         * @constructor
         * @param {JhaoProto.Iresp_server_internal_is_user_online=} [properties] Properties to set
         */
        function resp_server_internal_is_user_online(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * resp_server_internal_is_user_online isOnline.
         * @member {boolean} isOnline
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @instance
         */
        resp_server_internal_is_user_online.prototype.isOnline = false;

        /**
         * Creates a new resp_server_internal_is_user_online instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {JhaoProto.Iresp_server_internal_is_user_online=} [properties] Properties to set
         * @returns {JhaoProto.resp_server_internal_is_user_online} resp_server_internal_is_user_online instance
         */
        resp_server_internal_is_user_online.create = function create(properties) {
            return new resp_server_internal_is_user_online(properties);
        };

        /**
         * Encodes the specified resp_server_internal_is_user_online message. Does not implicitly {@link JhaoProto.resp_server_internal_is_user_online.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {JhaoProto.Iresp_server_internal_is_user_online} message resp_server_internal_is_user_online message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_is_user_online.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.isOnline != null && Object.hasOwnProperty.call(message, "isOnline"))
                writer.uint32(/* id 1, wireType 0 =*/8).bool(message.isOnline);
            return writer;
        };

        /**
         * Encodes the specified resp_server_internal_is_user_online message, length delimited. Does not implicitly {@link JhaoProto.resp_server_internal_is_user_online.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {JhaoProto.Iresp_server_internal_is_user_online} message resp_server_internal_is_user_online message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_is_user_online.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_server_internal_is_user_online message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_server_internal_is_user_online} resp_server_internal_is_user_online
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_is_user_online.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_server_internal_is_user_online();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.isOnline = reader.bool();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_server_internal_is_user_online message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_server_internal_is_user_online} resp_server_internal_is_user_online
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_is_user_online.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_server_internal_is_user_online message.
         * @function verify
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_server_internal_is_user_online.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.isOnline != null && message.hasOwnProperty("isOnline"))
                if (typeof message.isOnline !== "boolean")
                    return "isOnline: boolean expected";
            return null;
        };

        /**
         * Creates a resp_server_internal_is_user_online message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_server_internal_is_user_online} resp_server_internal_is_user_online
         */
        resp_server_internal_is_user_online.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_server_internal_is_user_online)
                return object;
            var message = new $root.JhaoProto.resp_server_internal_is_user_online();
            if (object.isOnline != null)
                message.isOnline = Boolean(object.isOnline);
            return message;
        };

        /**
         * Creates a plain object from a resp_server_internal_is_user_online message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {JhaoProto.resp_server_internal_is_user_online} message resp_server_internal_is_user_online
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_server_internal_is_user_online.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.isOnline = false;
            if (message.isOnline != null && message.hasOwnProperty("isOnline"))
                object.isOnline = message.isOnline;
            return object;
        };

        /**
         * Converts this resp_server_internal_is_user_online to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_server_internal_is_user_online.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_server_internal_is_user_online
         * @function getTypeUrl
         * @memberof JhaoProto.resp_server_internal_is_user_online
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_server_internal_is_user_online.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_server_internal_is_user_online";
        };

        return resp_server_internal_is_user_online;
    })();

    JhaoProto.req_server_internal_club_create_room_template = (function() {

        /**
         * Properties of a req_server_internal_club_create_room_template.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_club_create_room_template
         */

        /**
         * Constructs a new req_server_internal_club_create_room_template.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_club_create_room_template.
         * @implements Ireq_server_internal_club_create_room_template
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_club_create_room_template=} [properties] Properties to set
         */
        function req_server_internal_club_create_room_template(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new req_server_internal_club_create_room_template instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {JhaoProto.Ireq_server_internal_club_create_room_template=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_club_create_room_template} req_server_internal_club_create_room_template instance
         */
        req_server_internal_club_create_room_template.create = function create(properties) {
            return new req_server_internal_club_create_room_template(properties);
        };

        /**
         * Encodes the specified req_server_internal_club_create_room_template message. Does not implicitly {@link JhaoProto.req_server_internal_club_create_room_template.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {JhaoProto.Ireq_server_internal_club_create_room_template} message req_server_internal_club_create_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_club_create_room_template.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_club_create_room_template message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_club_create_room_template.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {JhaoProto.Ireq_server_internal_club_create_room_template} message req_server_internal_club_create_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_club_create_room_template.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_club_create_room_template message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_club_create_room_template} req_server_internal_club_create_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_club_create_room_template.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_club_create_room_template();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_club_create_room_template message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_club_create_room_template} req_server_internal_club_create_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_club_create_room_template.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_club_create_room_template message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_club_create_room_template.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a req_server_internal_club_create_room_template message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_club_create_room_template} req_server_internal_club_create_room_template
         */
        req_server_internal_club_create_room_template.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_club_create_room_template)
                return object;
            return new $root.JhaoProto.req_server_internal_club_create_room_template();
        };

        /**
         * Creates a plain object from a req_server_internal_club_create_room_template message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {JhaoProto.req_server_internal_club_create_room_template} message req_server_internal_club_create_room_template
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_club_create_room_template.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this req_server_internal_club_create_room_template to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_club_create_room_template.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_club_create_room_template
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_club_create_room_template
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_club_create_room_template.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_club_create_room_template";
        };

        return req_server_internal_club_create_room_template;
    })();

    JhaoProto.req_server_internal_club_delete_room_template = (function() {

        /**
         * Properties of a req_server_internal_club_delete_room_template.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_club_delete_room_template
         * @property {number|null} [id] req_server_internal_club_delete_room_template id
         */

        /**
         * Constructs a new req_server_internal_club_delete_room_template.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_club_delete_room_template.
         * @implements Ireq_server_internal_club_delete_room_template
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_club_delete_room_template=} [properties] Properties to set
         */
        function req_server_internal_club_delete_room_template(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_server_internal_club_delete_room_template id.
         * @member {number} id
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @instance
         */
        req_server_internal_club_delete_room_template.prototype.id = 0;

        /**
         * Creates a new req_server_internal_club_delete_room_template instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.Ireq_server_internal_club_delete_room_template=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_club_delete_room_template} req_server_internal_club_delete_room_template instance
         */
        req_server_internal_club_delete_room_template.create = function create(properties) {
            return new req_server_internal_club_delete_room_template(properties);
        };

        /**
         * Encodes the specified req_server_internal_club_delete_room_template message. Does not implicitly {@link JhaoProto.req_server_internal_club_delete_room_template.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.Ireq_server_internal_club_delete_room_template} message req_server_internal_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_club_delete_room_template.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.id != null && Object.hasOwnProperty.call(message, "id"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.id);
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_club_delete_room_template message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_club_delete_room_template.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.Ireq_server_internal_club_delete_room_template} message req_server_internal_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_club_delete_room_template.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_club_delete_room_template message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_club_delete_room_template} req_server_internal_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_club_delete_room_template.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_club_delete_room_template();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.id = reader.int32();
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_club_delete_room_template message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_club_delete_room_template} req_server_internal_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_club_delete_room_template.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_club_delete_room_template message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_club_delete_room_template.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.id != null && message.hasOwnProperty("id"))
                if (!$util.isInteger(message.id))
                    return "id: integer expected";
            return null;
        };

        /**
         * Creates a req_server_internal_club_delete_room_template message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_club_delete_room_template} req_server_internal_club_delete_room_template
         */
        req_server_internal_club_delete_room_template.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_club_delete_room_template)
                return object;
            var message = new $root.JhaoProto.req_server_internal_club_delete_room_template();
            if (object.id != null)
                message.id = object.id | 0;
            return message;
        };

        /**
         * Creates a plain object from a req_server_internal_club_delete_room_template message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.req_server_internal_club_delete_room_template} message req_server_internal_club_delete_room_template
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_club_delete_room_template.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.id = 0;
            if (message.id != null && message.hasOwnProperty("id"))
                object.id = message.id;
            return object;
        };

        /**
         * Converts this req_server_internal_club_delete_room_template to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_club_delete_room_template.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_club_delete_room_template
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_club_delete_room_template
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_club_delete_room_template.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_club_delete_room_template";
        };

        return req_server_internal_club_delete_room_template;
    })();

    JhaoProto.resp_server_internal_club_delete_room_template = (function() {

        /**
         * Properties of a resp_server_internal_club_delete_room_template.
         * @memberof JhaoProto
         * @interface Iresp_server_internal_club_delete_room_template
         */

        /**
         * Constructs a new resp_server_internal_club_delete_room_template.
         * @memberof JhaoProto
         * @classdesc Represents a resp_server_internal_club_delete_room_template.
         * @implements Iresp_server_internal_club_delete_room_template
         * @constructor
         * @param {JhaoProto.Iresp_server_internal_club_delete_room_template=} [properties] Properties to set
         */
        function resp_server_internal_club_delete_room_template(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_server_internal_club_delete_room_template instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.Iresp_server_internal_club_delete_room_template=} [properties] Properties to set
         * @returns {JhaoProto.resp_server_internal_club_delete_room_template} resp_server_internal_club_delete_room_template instance
         */
        resp_server_internal_club_delete_room_template.create = function create(properties) {
            return new resp_server_internal_club_delete_room_template(properties);
        };

        /**
         * Encodes the specified resp_server_internal_club_delete_room_template message. Does not implicitly {@link JhaoProto.resp_server_internal_club_delete_room_template.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.Iresp_server_internal_club_delete_room_template} message resp_server_internal_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_club_delete_room_template.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_server_internal_club_delete_room_template message, length delimited. Does not implicitly {@link JhaoProto.resp_server_internal_club_delete_room_template.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.Iresp_server_internal_club_delete_room_template} message resp_server_internal_club_delete_room_template message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_club_delete_room_template.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_server_internal_club_delete_room_template message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_server_internal_club_delete_room_template} resp_server_internal_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_club_delete_room_template.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_server_internal_club_delete_room_template();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_server_internal_club_delete_room_template message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_server_internal_club_delete_room_template} resp_server_internal_club_delete_room_template
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_club_delete_room_template.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_server_internal_club_delete_room_template message.
         * @function verify
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_server_internal_club_delete_room_template.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_server_internal_club_delete_room_template message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_server_internal_club_delete_room_template} resp_server_internal_club_delete_room_template
         */
        resp_server_internal_club_delete_room_template.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_server_internal_club_delete_room_template)
                return object;
            return new $root.JhaoProto.resp_server_internal_club_delete_room_template();
        };

        /**
         * Creates a plain object from a resp_server_internal_club_delete_room_template message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {JhaoProto.resp_server_internal_club_delete_room_template} message resp_server_internal_club_delete_room_template
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_server_internal_club_delete_room_template.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_server_internal_club_delete_room_template to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_server_internal_club_delete_room_template.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_server_internal_club_delete_room_template
         * @function getTypeUrl
         * @memberof JhaoProto.resp_server_internal_club_delete_room_template
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_server_internal_club_delete_room_template.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_server_internal_club_delete_room_template";
        };

        return resp_server_internal_club_delete_room_template;
    })();

    JhaoProto.req_server_internal_createRoom = (function() {

        /**
         * Properties of a req_server_internal_createRoom.
         * @memberof JhaoProto
         * @interface Ireq_server_internal_createRoom
         * @property {JhaoProto.IRoomModel|null} [room] req_server_internal_createRoom room
         */

        /**
         * Constructs a new req_server_internal_createRoom.
         * @memberof JhaoProto
         * @classdesc Represents a req_server_internal_createRoom.
         * @implements Ireq_server_internal_createRoom
         * @constructor
         * @param {JhaoProto.Ireq_server_internal_createRoom=} [properties] Properties to set
         */
        function req_server_internal_createRoom(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * req_server_internal_createRoom room.
         * @member {JhaoProto.IRoomModel|null|undefined} room
         * @memberof JhaoProto.req_server_internal_createRoom
         * @instance
         */
        req_server_internal_createRoom.prototype.room = null;

        /**
         * Creates a new req_server_internal_createRoom instance using the specified properties.
         * @function create
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {JhaoProto.Ireq_server_internal_createRoom=} [properties] Properties to set
         * @returns {JhaoProto.req_server_internal_createRoom} req_server_internal_createRoom instance
         */
        req_server_internal_createRoom.create = function create(properties) {
            return new req_server_internal_createRoom(properties);
        };

        /**
         * Encodes the specified req_server_internal_createRoom message. Does not implicitly {@link JhaoProto.req_server_internal_createRoom.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {JhaoProto.Ireq_server_internal_createRoom} message req_server_internal_createRoom message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_createRoom.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.room != null && Object.hasOwnProperty.call(message, "room"))
                $root.JhaoProto.RoomModel.encode(message.room, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            return writer;
        };

        /**
         * Encodes the specified req_server_internal_createRoom message, length delimited. Does not implicitly {@link JhaoProto.req_server_internal_createRoom.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {JhaoProto.Ireq_server_internal_createRoom} message req_server_internal_createRoom message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        req_server_internal_createRoom.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a req_server_internal_createRoom message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.req_server_internal_createRoom} req_server_internal_createRoom
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_createRoom.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.req_server_internal_createRoom();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1: {
                        message.room = $root.JhaoProto.RoomModel.decode(reader, reader.uint32());
                        break;
                    }
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a req_server_internal_createRoom message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.req_server_internal_createRoom} req_server_internal_createRoom
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        req_server_internal_createRoom.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a req_server_internal_createRoom message.
         * @function verify
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        req_server_internal_createRoom.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.room != null && message.hasOwnProperty("room")) {
                var error = $root.JhaoProto.RoomModel.verify(message.room);
                if (error)
                    return "room." + error;
            }
            return null;
        };

        /**
         * Creates a req_server_internal_createRoom message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.req_server_internal_createRoom} req_server_internal_createRoom
         */
        req_server_internal_createRoom.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.req_server_internal_createRoom)
                return object;
            var message = new $root.JhaoProto.req_server_internal_createRoom();
            if (object.room != null) {
                if (typeof object.room !== "object")
                    throw TypeError(".JhaoProto.req_server_internal_createRoom.room: object expected");
                message.room = $root.JhaoProto.RoomModel.fromObject(object.room);
            }
            return message;
        };

        /**
         * Creates a plain object from a req_server_internal_createRoom message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {JhaoProto.req_server_internal_createRoom} message req_server_internal_createRoom
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        req_server_internal_createRoom.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults)
                object.room = null;
            if (message.room != null && message.hasOwnProperty("room"))
                object.room = $root.JhaoProto.RoomModel.toObject(message.room, options);
            return object;
        };

        /**
         * Converts this req_server_internal_createRoom to JSON.
         * @function toJSON
         * @memberof JhaoProto.req_server_internal_createRoom
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        req_server_internal_createRoom.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for req_server_internal_createRoom
         * @function getTypeUrl
         * @memberof JhaoProto.req_server_internal_createRoom
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        req_server_internal_createRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.req_server_internal_createRoom";
        };

        return req_server_internal_createRoom;
    })();

    JhaoProto.resp_server_internal_createRoom = (function() {

        /**
         * Properties of a resp_server_internal_createRoom.
         * @memberof JhaoProto
         * @interface Iresp_server_internal_createRoom
         */

        /**
         * Constructs a new resp_server_internal_createRoom.
         * @memberof JhaoProto
         * @classdesc Represents a resp_server_internal_createRoom.
         * @implements Iresp_server_internal_createRoom
         * @constructor
         * @param {JhaoProto.Iresp_server_internal_createRoom=} [properties] Properties to set
         */
        function resp_server_internal_createRoom(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }

        /**
         * Creates a new resp_server_internal_createRoom instance using the specified properties.
         * @function create
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {JhaoProto.Iresp_server_internal_createRoom=} [properties] Properties to set
         * @returns {JhaoProto.resp_server_internal_createRoom} resp_server_internal_createRoom instance
         */
        resp_server_internal_createRoom.create = function create(properties) {
            return new resp_server_internal_createRoom(properties);
        };

        /**
         * Encodes the specified resp_server_internal_createRoom message. Does not implicitly {@link JhaoProto.resp_server_internal_createRoom.verify|verify} messages.
         * @function encode
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {JhaoProto.Iresp_server_internal_createRoom} message resp_server_internal_createRoom message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_createRoom.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            return writer;
        };

        /**
         * Encodes the specified resp_server_internal_createRoom message, length delimited. Does not implicitly {@link JhaoProto.resp_server_internal_createRoom.verify|verify} messages.
         * @function encodeDelimited
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {JhaoProto.Iresp_server_internal_createRoom} message resp_server_internal_createRoom message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        resp_server_internal_createRoom.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a resp_server_internal_createRoom message from the specified reader or buffer.
         * @function decode
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {JhaoProto.resp_server_internal_createRoom} resp_server_internal_createRoom
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_createRoom.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JhaoProto.resp_server_internal_createRoom();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };

        /**
         * Decodes a resp_server_internal_createRoom message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {JhaoProto.resp_server_internal_createRoom} resp_server_internal_createRoom
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        resp_server_internal_createRoom.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader))
                reader = new $Reader(reader);
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a resp_server_internal_createRoom message.
         * @function verify
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        resp_server_internal_createRoom.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            return null;
        };

        /**
         * Creates a resp_server_internal_createRoom message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {JhaoProto.resp_server_internal_createRoom} resp_server_internal_createRoom
         */
        resp_server_internal_createRoom.fromObject = function fromObject(object) {
            if (object instanceof $root.JhaoProto.resp_server_internal_createRoom)
                return object;
            return new $root.JhaoProto.resp_server_internal_createRoom();
        };

        /**
         * Creates a plain object from a resp_server_internal_createRoom message. Also converts values to other types if specified.
         * @function toObject
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {JhaoProto.resp_server_internal_createRoom} message resp_server_internal_createRoom
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        resp_server_internal_createRoom.toObject = function toObject() {
            return {};
        };

        /**
         * Converts this resp_server_internal_createRoom to JSON.
         * @function toJSON
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        resp_server_internal_createRoom.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for resp_server_internal_createRoom
         * @function getTypeUrl
         * @memberof JhaoProto.resp_server_internal_createRoom
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        resp_server_internal_createRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/JhaoProto.resp_server_internal_createRoom";
        };

        return resp_server_internal_createRoom;
    })();

    return JhaoProto;
})();

module.exports = $root;
